On 4/3/2018 2:28 PM, Jeff King wrote:
On Tue, Apr 03, 2018 at 11:05:36AM -0700, Brandon Williams wrote:
On 04/03, Derrick Stolee wrote:
The generation number of a commit is defined recursively as follows:
* If a commit A has no parents, then the generation number of A is one.
* If a commit A has parents, then the generation number of A is one
more than the maximum generation number among the parents of A.
Add a uint32_t generation field to struct commit so we can pass this
Is there any reason to believe this would be too small of a value in the
future? Or is a 32 bit unsigned good enough?
The linux kernel took ~10 years to produce 500k commits. Even assuming
those were all linear (and they're not), that gives us ~80,000 years of
leeway. So even if the pace of development speeds up or we have a
quicker project, it still seems we have a pretty reasonable safety
margin.
That, and larger projects do not have linear histories. Despite having
almost 2 million reachable commits, the Windows repository has maximum
generation number ~100,000.
Thanks,
-Stolee