[PATCH 0/6] Compute and consume generation numbers
- Date: Tue, 3 Apr 2018 12:51:37 -0400
- From: Derrick Stolee <dstolee@xxxxxxxxxxxxx>
- Subject: [PATCH 0/6] Compute and consume generation numbers
This is the first of several "small" patches that follow the serialized
Git commit graph patch (ds/commit-graph).
As described in Documentation/technical/commit-graph.txt, the generation
number of a commit is one more than the maximum generation number among
its parents (trivially, a commit with no parents has generation number
This series makes the computation of generation numbers part of the
commit-graph write process.
Finally, generation numbers are used to order commits in the priority
queue in paint_down_to_common(). This allows a constant-time check in
queue_has_nonstale() instead of the previous linear-time check.
This does not have a significant performance benefit in repositories
of normal size, but in the Windows repository, some merge-base
calculations improve from 3.1s to 2.9s. A modest speedup, but provides
an actual consumer of generation numbers as a starting point.
A more substantial refactoring of revision.c is required before making
'git log --graph' use generation numbers effectively.
This patch series depends on v7 of ds/commit-graph.
Derrick Stolee (6):
object.c: parse commit in graph first
commit: add generation number to struct commmit
commit-graph: compute generation numbers
commit: sort by generation number in paint_down_to_common()
commit.c: use generation number to stop merge-base walks
commit-graph.txt: update design doc with generation numbers
Documentation/technical/commit-graph.txt | 7 +---
alloc.c | 1 +
commit-graph.c | 48 +++++++++++++++++++++
commit.c | 53 ++++++++++++++++++++----
commit.h | 7 +++-
object.c | 4 +-
6 files changed, 104 insertions(+), 16 deletions(-)