limit parallelism by allowing to set the amount of threads
pack
extract borrowed objects from a pack
support streamed objects (similar to how it's done with loose objects) - no need, all slices support io::Read, and we don't
actually support streaming, so let's net unify 'interfaces' on a low level like this.
owned objects
encode object
blob
tag
tree
commit
pack verify
add '--some-flag' to run every non-blob through a decode/encode cycle to see if all objects can be parsed
The Linux Kernel verifies --decode and --re-encode
parse pgp_signature and mergetag into 'extra-headers' without further parsing
The Rust repo verifies --decode and --re-encode
add re-encode to all stress tests
support easy access to merge-tags and the signature
stream pack for verify-pack
support for multi-threading
choice of algorithm in pack-verify
use pack streaming in pack-verify by default
set some unit tests cases to use the streaming algorithm
progress - convenience
inc() method andinc_by(step) method
plumbing - explode pack
useful for receiving packs that are small enough to warrant living as loose objects for a while
preventing pack buildup
write loose object
multi-threaded
progress
statistics
index-from-pack
capability to receive packs from a stream
multi-db (incorporate object lookup for loose objects and packs)
single threaded
optional object cache
fs-check - verify all object content of a git repository
progress - convenience
a way to measure throughput on drop
percentages somewhere near the progress bar
### TODO pack decoding + pack exploding
* **parallel**
* [x] limit parallelism by allowing to set the amount of threads
* **pack**
* [x] extract borrowed objects from a pack
* [ ] ~~support streamed objects (similar to how it's done with loose objects)~~ - no need, all slices support io::Read, and we don't
actually support streaming, so let's net unify 'interfaces' on a low level like this.
* **owned objects**
* [x] encode object
* [x] blob
* [x] tag
* [x] tree
* [x] commit
* **pack verify**
* [x] add '--some-flag' to run every non-blob through a decode/encode cycle to see if all objects can be parsed
* [x] The Linux Kernel verifies `--decode` and `--re-encode`
* [x] parse pgp_signature and mergetag into 'extra-headers' without further parsing
* [x] The Rust repo verifies `--decode` and `--re-encode`
* [x] add re-encode to all stress tests
* [x] support easy access to merge-tags and the signature
* **stream pack for verify-pack**
* [x] support for multi-threading
* [x] choice of algorithm in pack-verify
* [x] use pack streaming in pack-verify by default
* [x] set some unit tests cases to use the streaming algorithm
* **progress - convenience**
* [x] `inc()` method and`inc_by(step)` method
* **plumbing - explode pack**
* _useful for receiving packs that are small enough to warrant living as loose objects for a while
preventing pack buildup_
* [ ] write loose object
* [ ] multi-threaded
* [ ] progress
* [ ] statistics
* **index-from-pack**
* _capability to receive packs from a stream_
* **multi-db** (incorporate object lookup for loose objects and packs)
* [ ] single threaded
* [ ] optional object cache
* [ ] fs-check - verify all object content of a git repository
* **progress - convenience**
* [ ] a way to measure throughput on drop
* [ ] percentages somewhere near the progress bar