On Wed, Nov 15, 2017 at 7:24 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > I am not sure if "And if there is ..." is adding much value here (I > do not think it is even technically correct for that matter). If > there are more than one tag that point at the commit the user is > interested in, we use one of the tags, as tags conceptually sit at a > higher level. And we use a heuristic to use one or the other tag to > make up a name for the commit, so the same commit can have two valid > names. ---So what? Neither of these two valid names is "ambigous"; > the commit object the user wanted to name _is_ correctly identified > (I would assume that we are not discussing a hash collision). > > Lucikly, if we remove "And if...precisely", the logic still flows > nicely, if not more, to the next paragraph. fixed. >> When describing a blob, we want to describe the blob from a higher layer >> as well, which is a tuple of (commit, deep/path) as the tree objects >> involved are rather uninteresting. The same blob can be referenced by >> multiple commits, so how we decide which commit to use? This patch >> implements a rather naive approach on this: As there are no back pointers >> from blobs to commits in which the blob occurs, we'll start walking from >> any tips available, listing the blobs in-order of the commit and once we > > Is "any tips" still the case? I was wondering why you start your > traversal at HEAD and nothing else in this iteration. There seems > to be no mention of this design decision in the documentation and no > justification in the log. fixed the text. The design decision to reverse walk HEAD is tied to your observation below: > The reversing may improve the chance of an older commit to be chosen > rather than the newer one, but it does not even guarantee to show the > "introduction". This is what I realized when we started walking all refs including reflog. The introduction can only be found when we take the commit-parents into account and look at the diffs. I noticed you started origin/jc/diff-blobfind which may be helpful to find the introduction correctly, which I'll play around with that and see if I can get that working. > What this guarantees is that a long history will be traversed fully > before we start considering which commit has the blob of interest, I > am afraid. Is this a sensible trade-off? I am not fully convinced all descriptions are in recent history, but I tend to agree that most are, so probably the trade off is a wash.