Junio, would you please pull the following into pu:
git://git.linaro.org/people/nico/git
This is the pack v4 work to date which is somewhat getting usable. It
is time it gets more exposure, and possibly some more people's attention
who would like to work on the missing parts as I need to scale down my
own involvement.
I've included the latest patches from Nguyn Thái Ngc Duy (sorry for not
handling your name properly) as well. There is no test suite for this
yet, but the added code doesn't seem to regress the existing tests.
Nguyễn Thái Ngọc Duy (31):
Document pack v4 format
pack v4: allocate dicts from the beginning
pack v4: stop using static/global variables in packv4-create.c
pack v4: move packv4-create.c to libgit.a
pack v4: split pv4_create_dict() out of load_dict()
pack v4: add pv4_free_dict()
index-pack: add more comments on some big functions
index-pack: split out varint decoding code
index-pack: do not allocate buffer for unpacking deltas in the first pass
index-pack: split inflate/digest code out of unpack_entry_data
index-pack: parse v4 header and dictionaries
index-pack: make sure all objects are registered in v4's SHA-1 table
index-pack: parse v4 commit format
index-pack: parse v4 tree format
index-pack: move delta base queuing code to unpack_raw_entry
index-pack: record all delta bases in v4 (tree and ref-delta)
index-pack: skip looking for ofs-deltas in v4 as they are not allowed
index-pack: resolve v4 one-base trees
pack v4: add version argument to write_pack_header
pack_write: tighten valid object type check in
encode_in_pack_object_header
pack-write.c: add pv4_encode_object_header
pack-objects: add --version to specify written pack version
list-objects.c: add show_tree_entry callback to traverse_commit_list
pack-objects: do not cache delta for v4 trees
pack-objects: exclude commits out of delta objects in v4
pack-objects: create pack v4 tables
pack-objects: prepare SHA-1 table in v4
pack-objects: support writing pack v4
pack v4: support "end-of-pack" indicator in index-pack and pack-objects
index-pack: use nr_objects_final as sha1_table size
index-pack: support completing thin packs v4
Nicolas Pitre (41):
pack v4: initial pack dictionary structure and code
export packed_object_info()
pack v4: scan tree objects
pack v4: add tree entry mode support to dictionary entries
pack v4: add commit object parsing
pack v4: split the object list and dictionary creation
pack v4: move to struct pack_idx_entry and get rid of our own struct
idx_entry
pack v4: basic SHA1 reference encoding
introduce get_sha1_lowhex()
pack v4: commit object encoding
pack v4: tree object encoding
pack v4: dictionary table output
pack v4: creation code
pack v4: object headers
pack v4: object data copy
pack v4: object writing
pack v4: tree object delta encoding
pack v4: load delta candidate for encoding tree objects
packv4-create: optimize delta encoding
pack v4: honor pack.compression config option
pack v4: relax commit parsing a bit
packv4-create: don't transcode tree objects with zero-padded file modes
pack index v3
packv4-create: normalize pack name to properly generate the pack index
file name
packv4-create: add progress display
pack v4: initial pack index v3 support on the read side
pack v4: object header decode
pack v4: code to obtain a SHA1 from a sha1ref
pack v4: code to load and prepare a pack dictionary table for use
pack v4: code to retrieve an ident entry
pack v4: code to recreate a canonical commit object
sha1_file.c: make use of decode_varint()
pack v4: parse delta base reference
pack v4: we can read commit objects now
pack v4: code to retrieve a path component
pack v4: decode tree objects
pack v4: we can read tree objects now
packv4-create: add a command line argument to limit tree copy sequences
pack v4: allow canonical commit and tree objects
packv4-parse.c: get rid of snprintf()
packv4-parse.c: allow tree entry copying from a canonical tree object
Documentation/technical/pack-format.txt | 138 ++++-
Makefile | 5 +
builtin/index-pack.c | 781 ++++++++++++++++++++++----
builtin/pack-objects.c | 230 +++++++-
builtin/rev-list.c | 4 +-
bulk-checkin.c | 2 +-
cache.h | 13 +
hex.c | 11 +
list-objects.c | 9 +-
list-objects.h | 3 +-
pack-check.c | 4 +-
pack-revindex.c | 7 +-
pack-write.c | 57 +-
pack.h | 6 +-
packv4-create.c | 685 ++++++++++++++++++++++
packv4-create.h | 39 ++
packv4-parse.c | 576 +++++++++++++++++++
packv4-parse.h | 18 +
sha1_file.c | 116 +++-
test-packv4.c | 476 ++++++++++++++++
upload-pack.c | 2 +-
21 files changed, 3007 insertions(+), 175 deletions(-)