Subject: Re: [PATCH 0/6] Compute and consume generation numbers

From: Derrick Stolee <[email-masked]>
Date: Tue, 3 Apr 2018 12:56:41 -0400

On 4/3/2018 12:51 PM, Derrick Stolee wrote:
> 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
> one).
>
> 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

This patch is also available as a GitHub pull request [1]

[1] https://github.com/derrickstolee/git/pull/5