shithub: furgit

ref: f40daef1deefda4b76957f5d5728c4175c27be51
dir: /ROADMAP.md/

View raw version
# Roadmap

* Configuration
  * [X] Parsing
  * [ ] Includes
  * [ ] Writing
* [X] Object IDs
  * [X] SHA-256
  * [X] SHA-1
* [X] Object model (incl., parse, serialize)
  * [X] Blobs
  * [X] Trees
    * [X] File mode definitions
    * [X] Entry insertion ordering
    * [X] Traversal
    * [ ] Pathspec
  * [X] Commits
  * [X] Annotated tags
  * [X] Stored objects
* Further cryptography
  * [ ] OpenPGP signatures
  * [ ] SSH signatures
* [X] Reading object stores
  * [X] Pluggable interface
  * [X] Chain lookup store
  * [X] Bundle store
  * [X] MRU lookup store
  * [X] Reading loose objects
  * [ ] Promisor remotes
  * [ ] Alternates
  * [X] Reading packed objects
    * [X] Pack index lookups
    * [X] Delta caching
    * [X] Delta application
    * [ ] Pack-wide bloom filters
    * [ ] Multi pack indexes
* [ ] Writing objects
  * [X] Loose object writing
* Misc bundle features
  * [ ] Writing bundles
* Misc packfile features
  * [X] Writing pack indexes
  * [X] Writing reverse pack indexes
  * [ ] Writing packfiles
    * [ ] Writing thin packs
    * [ ] Compressing deltas
      * [ ] Delta islands
  * [ ] Pack verification
* Compression
  * [ ] Plugabble compression algorithms
  * [X] ZLIB support
  * [ ] DEFLATE optimizations
  * [X] Adler-32 SIMD optimizations
* [X] References
  * [X] Detached references
  * [X] Symbolic references
  * [X] Name verification/resolution
  * [X] Annotated tag ref peeling
  * [ ] Describe
  * [ ] Revision syntax
  * [ ] Namespaces
  * [ ] Replace refs, grafts
* [X] Reference stores
  * [X] Chain lookup store
  * [X] Files reference store
    * [X] Reading loose refs
    * [X] Reading packed refs
    * [X] Atomic writes
    * [X] Batched writes
    * [ ] Packing refs
    * [ ] Reflogs
  * [ ] Reftable
* Reachability
  * [X] Have/wants walks
  * [X] Is ancestor
  * [X] Merge bases
  * [X] Commit graph
    * [X] Changed path bloom filters
    * [X] Chained graphs
    * [ ] Writing
  * [ ] Reachability bitmaps
    * [ ] For a single packfile
    * [ ] For Multi pack indexes
* Misc repository
  * [X] Opening relevant stores
  * [ ] Creating repositories
  * [ ] Filter branch/repo
  * [ ] Fast import/export
  * [ ] Git notes
  * [ ] Git attributes
  * [ ] Pseudorefs
  * Integrity and maintenance
    * [ ] Fsck
    * [ ] Repacking
    * [ ] Garbage collection
    * [ ] Cruft packing
    * [ ] Expiration
  * [ ] Grep
  * [ ] Submodules
  * [ ] Worktrees
  * [ ] Archive
  * [ ] LFS
  * [ ] Revision log walk
    * [ ] Topological ordering
    * [ ] Date ordering
    * [ ] Path-limited
* [ ] Diffing
  * [ ] Blame
  * [ ] Annotate
  * [X] Tree diffing
    * [ ] Similarity/rename/copy detection
  * [ ] Multi-way diffs
  * [ ] Patch-id
  * [ ] Range-diff
  * Blob diffing
    * [ ] Word diffs
    * [X] Myers
    * [ ] Patience
    * [ ] Histogram
    * [ ] Tree-way
  * [ ] Format patch
  * [ ] Apply/amend patch
* Branch integration/rewrite/etc methods
  * [ ] Merge
    * [ ] Recursive
    * [ ] ORT
  * [ ] Rebase
  * [ ] Cherry pick
  * [ ] Revert
  * [ ] Rerere
* Network protocols and related features
  * [X] pkt-line
  * [X] side-band-64k
  * [X] Ingesting packfiles
    * [X] Quarantine areas
    * [X] Un-thinning thin packs
  * Version 0, version 1 protocols
    * [X] Server side
      * [X] Reference advertisement
      * [X] Capability negotiation
      * [X] Receive
      * [ ] "Upload"
    * [ ] Client side
      * [ ] Send
      * [ ] Fetch
  * Version 2 protocol
    * [ ] Server side
      * [ ] "Upload"
    * [ ] Client side
      * [ ] Fetch
  * Protocol-independent logic
    * Common
      * [X] Progress meters
    * Client side
      * [ ] Refspec
      * [ ] Fetch
        * [ ] Partial clones
          * [ ] Object filtering
        * [ ] Bundle URI
        * [ ] Packfile URI
        * [ ] Shallow clones
      * [ ] Send
    * Server side
      * [ ] Upload
        * [ ] Object filtering
      * [X] Receive
        * [ ] Signed push
        * Hooks
          * Slots
            * [ ] After ref negotiation
            * [X] After object unpacking
          * Provided samples
            * [X] Chain
            * [X] Force push rejection
* [ ] Working trees
  * [ ] Stashing
  * [ ] Ignore rules
  * [ ] Checkouts
    * [ ] Sparse checkouts
    * [ ] CR/LF conversions
    * [ ] File mode conversions
  * [ ] Indexes
    * [ ] Conflict resolution
    * [ ] Split index
    * [ ] Sparse index
    * [ ] Untracked cache
  * [ ] Status listing
  * [ ] Filesystem monitor
  * [ ] Worktree
    * [ ] Common directory
    * [ ] Worktree-specific references
* Research
  * [ ] Dynamic packfiles
    * [ ] Compaction; page-sized hole punching
    * [ ] Dynamic indexing
      * [ ] Linear/extendible/spiral hashing
    * [ ] Dynamic reachability bitmaps

## Not planned

* CLI tools
* Clone
* Anything reasonably considered "porcelain"
* Credential helper
* Transports
* Auth
* Remote management
* Bisect
* Any use of env vars
* Repository discovery walking