On Tue, Feb 16 2021, Junio C Hamano wrote: > Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > >> On Sun, Feb 14 2021, René Scharfe wrote: >> >>> Add a format placeholder for describe output. Implement it by actually >>> calling git describe, which is simple and guarantees correctness. It's >>> intended to be used with $Format:...$ in files with the attribute >>> export-subst and git archive. >> >> Does it really guarantee correctness though? In "builtin/describe.c" we >> first walk over the refs and use that to format all N items we're asked >> about. >> >> Under "git log" this is presumably in a race where refs added/deleted >> during the run of "git log" will change the describe output to be >> inconsistent with earlier lines. > > Yes, but it is not a news that the describe for a given commit will > not stay the constant while you add more objects to the repository > or you change the tags, whether the "describe" is driven internally > by "git log" or by the end-user, so I am not sure how that becomes > an issue. If the output is inconsistent in a quiescent repository, > that would be a problem, though. > > Puzzled. Usually something shelling out has going for it is that even if it's slow it's at least known to be bug-free, after all we use the command like that already. I just wanted to point out this edge case, for "git describe <commits>" we do the ref list once at the beginning so our N list will be consistent within itself. Whereas one might expect "git log" to also format such a list, but due to the internal implementation the semantics are different.