<commit_before>issues
======

- the """// TODO: Provide "haves" """ thing is kind of a perf issue!
- doesn't support reading loose data objects on local (only packfiles)
  - wait, are their docs out of date?  `storage/seekable` sounds like looses
    - nope, it's not looses.  look at the `(s *ObjectStorage) Get` method.  only packfiles.
	  - and only *single* packfiles at that.
	    - `(d *GitDir) Packfile()` demonstrates a fundamental misunderstanding.  that should be plural.  :/
    - `formats/objfile` looks like looses thought, both read and write
	  - so maybe the amount of glue missing is quite tiny at this point?
	    - indeeeeed.  `storage/seekable` straight up just doesn't import the objfile package yet.
		- looks like most of the objfile support landed on july 4 (not too long ago).<commit_msg>Many more notes.<commit_after>issues
======

showstoppers
------------

- can't slurp data from a local file repo at all
  - it's partially there: `storage/seekable` is for local file repos
  - blocker 1: doesn't support reading loose data objects on local (only packfiles)
    - look at the `(s *ObjectStorage) Get` method.  only packfiles.
    - `formats/objfile` looks like looses thought, both read and write
      - so maybe the amount of glue missing is quite tiny at this point?
        - indeeeeed.  `storage/seekable` straight up just doesn't import the objfile package yet.
        - looks like most of the objfile support landed on july 4 (not too long ago).
  - blocker 2: packfile support is not completely.  only works for *single* packfiles.
    - look at `(d *GitDir) Packfile()` method.  the very name should be plural.  :/
    - this is probably fairly easily fixed.

- can't produce a clone that cgit can read
  - note: lower priority (we don't currently, in fact, do this)
  - blocker 1 alt1: can't write packfiles
  - blocker 1 alt2: maybe could cludge it with objfiles alone?  but also requires writing.
  - blocker 2: not sure if it can write the rest of the amusing config files at all

- the """// TODO: Provide "haves" """ thing is kind of a perf issue!
  - i actually see the haves protocol bits done `clients/common`
    - http uses em.  ssh doesn't appear to.


unknown
-------

- submodule support?
  - a PITA to write if not already present, but i experienced this once before in jgit -- know roughly what to do.


absent, but irrelevant
----------------------

- git protocol support
  - would be nice to have, but use in the wild is very very rare

- ability to push
  - on any protocol.  neither http or ssh support it.
  - we basically don't do this and don't expect to.


probably good
-------------

- ssh support
  - may need to write our own config parse? :/
  - otherwise, looks good, might actually be easier to debug and maintain that host stuff
    - and let's not even talk about how much better this is than the linking issues with libgit2
  - didn't see where the known_hosts can be specified yet but i'm sure the "x/crypto/ssh" pkg did something sane.
- http support
  - not much to say.  we've already seen it working.
  - only supports the http smart transport, not the legacy dumb transport.
    - the dumb http system isn't used much in the wild.  except i certainly do sometimes, tbh.  so easy to serve.

- replacing lsremote is definitely easy
  - `NewAuthenticatedRemote(url, auth).Connect().Info().Refs` bam done
  - again, let's not even talk about how much time i spend trying to do that in libgit2 before conclusively discovering it couldn't be done, and my PR to begin to joust at poking that is still in limbo for want of tests around nulls for an api that was already swiss cheese ok breathe take deep breaths it's ok the c isn't here anymore
{'fraction_non_alphanumeric': 0.08369214208826696, 'fraction_numerical': 0.002960172228202368, 'mean_word_length': 3.0270855904658722, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4988301', 'n_tokens_mistral': 1078, 'n_tokens_neox': 1009, 'n_words': 555}