This v6 includes feedback around csum-file.c and the rename of hashclose() to finalize_hashfile(). These are the first two commits of the series, so they could be pulled out independently. The only other change since v5 is that I re-ran the performance numbers in "commit: integrate commit graph with commit parsing". Hopefully this version is ready to merge. I have several follow-up topics in mind to submit soon after, including: * Auto-generate the commit graph as the repo changes: i. teach git-commit-graph an "fsck" subcommand and integrate with git-fsck ii. teach git-repack to call git-commit-graph * Generation numbers: i. teach git-commit-graph to compute generation numbers ii. consume generation numbers in paint_down_to_common() * Move globals from commit-graph.c to the_repository The three bullets (*) are relatively independent but have sub-items that appear in priority order. Derrick Stolee (14): csum-file: rename hashclose() to finalize_hashfile() csum-file: refactor finalize_hashfile() method commit-graph: add format document graph: add commit graph design document commit-graph: create git-commit-graph builtin commit-graph: implement write_commit_graph() commit-graph: implement 'git-commit-graph write' commit-graph: implement git commit-graph read commit-graph: add core.commitGraph setting commit-graph: close under reachability commit: integrate commit graph with commit parsing commit-graph: read only from specific pack-indexes commit-graph: build graph from starting commits commit-graph: implement "--additive" option .gitignore | 1 + Documentation/config.txt | 3 + Documentation/git-commit-graph.txt | 93 +++ Documentation/technical/commit-graph-format.txt | 98 ++++ Documentation/technical/commit-graph.txt | 164 ++++++ Makefile | 2 + alloc.c | 1 + builtin.h | 1 + builtin/commit-graph.c | 172 ++++++ builtin/index-pack.c | 2 +- builtin/pack-objects.c | 6 +- bulk-checkin.c | 4 +- cache.h | 1 + command-list.txt | 1 + commit-graph.c | 719 ++++++++++++++++++++++++ commit-graph.h | 47 ++ commit.c | 3 + commit.h | 3 + config.c | 5 + contrib/completion/git-completion.bash | 2 + csum-file.c | 10 +- csum-file.h | 9 +- environment.c | 1 + fast-import.c | 2 +- git.c | 1 + pack-bitmap-write.c | 2 +- pack-write.c | 5 +- packfile.c | 4 +- packfile.h | 2 + t/t5318-commit-graph.sh | 225 ++++++++ 30 files changed, 1568 insertions(+), 21 deletions(-) create mode 100644 Documentation/git-commit-graph.txt create mode 100644 Documentation/technical/commit-graph-format.txt create mode 100644 Documentation/technical/commit-graph.txt create mode 100644 builtin/commit-graph.c create mode 100644 commit-graph.c create mode 100644 commit-graph.h create mode 100755 t/t5318-commit-graph.sh base-commit: d0db9edba0050ada6f6eac68061599690d2a4333 -- 2.14.1