diff options
| -rw-r--r-- | README.md | 48 | ||||
| -rw-r--r-- | TODO | 18 |
2 files changed, 48 insertions, 18 deletions
@@ -14,6 +14,54 @@ Furgit is a somewhat fast Git library in Go. Currently undergoing a massive redesign; see the `legacy` branch too. +## Roadmap + +**Done** + +* Parsing configs +* Object ID and hash algorithms +* Object type enums +* Object representation types +* Object header parsing +* Parsing objects +* Serializing objects +* Diffing lines +* Diffing trees +* Object storer interface +* Reading loose objects +* Applying deltas +* `.idx` lookup +* Reading packed objects +* Object storer chain and mixer +* Ref types +* Ref storer interface +* Reading loose refs +* Reading packed refs +* Ref storer chain +* Reachability iterators +* Repository abstractions +* Adler-32 optimizations +* ZLIB pooling + +**Planned** + +* Streaming `.pack`/`.idx` hash verifier +* `.idx` and `.rev` writing +* Pack ingestion +* Un-thinning thin packs +* Quarantine areas +* V0/V1 protocol (e.g., `sideband-64k`, `pktline`, etc.) +* Receiving/fetching +* Writing configs +* Delta base selection, e.g., islands +* Compressing deltas +* Writing packfiles +* Commit graph +* Reachability bitmaps +* Thin packs +* DEFLATE optimizations +* Aggressive buffer pooling + ## Repos and mirrors * [Codeberg](https://codeberg.org/lindenii/furgit) (with the canonical issue tracker) @@ -1,18 +0,0 @@ -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 |
