shithub: furgit

ref: a9684e72e9ec9045c4588ef103e6489868bca394
dir: /TODO/

View raw version
Some basics to implement before we could really have network
protocols:

For client-side fetch, and server-side receive, we'll need:
* Reachability walking
* Creating indexes (.idx, .rev) from packs (streaming API)
* A streaming hash verifier for the pack ingestion path.
* Other things involving pack ingestion, such as reading and
  validating the pack header, un-thinning thin objects, streaming
  byte to a quarantined .pack while hashing the trailer, checking the
  trailer near the end.

For client-side send, and server-side upload, we'll need:
* Reachability walk (always iterators or otherwise streaming;
  haves/wants; never an entire slice/map of OIDs)
* Delta compression based on FastCDC; see 9front git
* Using bitmaps
* Investigate in detail the architecture of creating thin packs