This patch series includes two distinct, but similarly-motivated parts: * Patches 1-4 fix some bugs in the commit-graph generation number v2. * Patches 5-7 add a new generation number v3 by incrementing the commit-graph file format. I had been thinking about generation number v3, which is the same corrected commit date as generation number v2, but it is stored in the Commit Data chunk, requiring a new commit-graph file format version. This breaks compatibility with older versions of Git, so it requires opt-in via the commitGraph.generationVersion config value. The only improvement over version 2 is that the commit-graph file is smaller, so I/O time is reduced. However, while exploring this idea I found bugs in generation number v2. In particular, Git has been ignoring them since shortly after they were introduced. This is due to a bug I introduced when trying to make split commit-graphs safer with mixed generation number versions. I also noticed an issue with the offset overflows that I only noticed after writing generation number v3 using a smaller offset size, actually triggering the bug in the test suite. I'm submitting these two things together so we can see them all at once, but I'd be happy to split this into two series. The first four patches are important bug fixes, so we can consider them as higher-priority. Thanks, -Stolee Derrick Stolee (7): test-read-graph: include extra post-parse info commit-graph: fix ordering bug in generation numbers commit-graph: start parsing generation v2 (again) commit-graph: fix generation number v2 overflow values commit-graph: document file format v2 commit-graph: parse file format v2 commit-graph: write file format v2 Documentation/config/commitgraph.txt | 4 +- .../technical/commit-graph-format.txt | 22 ++++- commit-graph.c | 98 +++++++++++++++---- commit-graph.h | 6 ++ commit.h | 1 + t/helper/test-read-graph.c | 13 +++ t/t4216-log-bloom.sh | 1 + t/t5318-commit-graph.sh | 65 ++++++++++-- t/t5324-split-commit-graph.sh | 10 ++ 9 files changed, 189 insertions(+), 31 deletions(-) base-commit: dab1b7905d0b295f1acef9785bb2b9cbb0fdec84 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1163%2Fderrickstolee%2Fgen-v3-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1163/derrickstolee/gen-v3-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/1163 -- gitgitgadget