From: Phil Hord Date: Thu, 21 Jul 2011 00:47:39 GMT Subject: Re: Git commit generation numbers Message-ID: <4E27772B.60306@cisco.com> In-Reply-To: On 07/20/2011 08:37 PM, Shawn Pearce wrote: > On Wed, Jul 20, 2011 at 17:18, wrote: >> if it's just locally generated, then I could easily see generation numbers >> being different on different people's ssstems, dependin on the order that >> they see commits (either locally generated or pulled from others) > But this should only happen if the user fudges with their Git sources > and makes Git produce a different generation number. > > If the algorithm is always "gen(A) = max(gen(P) for each parent_of(A)) > + 1" then it doesn't matter who merged what commits, the same commit > appears at the same part of the graph relative to all of its > ancestors, and therefore always has the same generation number. This > is true whether or not the commit contains the generation number. Interesting. I was going to disagree with the latter part of your statement, but then I realized you're right. And that your algorithm allows duplicate generation numbers. And that there's nothing wrong with that. Because it meets the one quasi-essential need, "for each A in ancestors_of(B), gen(A) < gen(B)". >> If it's part of the commit, then as that commit gets propogated the >> generation number gets propogated as well, and every repository will agree >> on what the generation number is for any commit that's shared. > This isn't really as beneficial as you are making it out to be. We > already can agree on what the generation number should be for any > given commit, if you topo-sort the commit DAG, you get the same > result. > >> I agree that this consistancy guarantee seems to be valuable. > Its valuable, but its consistent either with a cache, or not. I still fail to see the value. Phil