Sebastian Thielupdate tasksec2f5c36 years agoHistory
44 lines · 1.9 KB · Markdown
RawDownload

TODO pack decoding + pack exploding

  • parallel
    • 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