On Tue, Dec 17, 2024 at 05:22:08PM -0800, Junio C Hamano wrote: > > -<refmiscinfo class="source">Git 2.47.1.409.g9bb10d27e7</refmiscinfo> > > -<refmiscinfo class="manual">Git Manual</refmiscinfo> > > +<refmiscinfo class="source">'Git 2.47.1.410.ga38edab7c8'</refmiscinfo>^M > > +<refmiscinfo class="manual">'Git Manual'</refmiscinfo>^M > > </refmeta> > > <refnamediv> > > <refname>git-bisect</refname> > > ``` > > Thanks for filling the blanks in ;-) > > The above differences however seem to be absorbed before these > strings reach git-bisect.1 by the documentation toolchain; > Running Documentation/doc-diff with --asciidoc or --asciidoctor > options do not show the difference in single quotes. Hmm. I thought that might be because we override the version and date strings in doc-diff to prevent extra output. But it seems that was broken by the same commit. Try: ./doc-diff a38edab7^ a38edab7 and you'll get a bunch of: -Git omitted 1970-01-01 GIT-ADD(1) +Git 2.47.1.410.ga 2024-12-06 GIT-ADD(1) diffs which show the breakage starting (and after that, you get further changes as each version changes by one commit). The override is done by setting GIT_VERSION on the make command line. And indeed, it seems like: make GIT_VERSION=foobar no longer has any effect. That could be a problem for packagers, as well, if they try to inject a custom version string (e.g., to represent the upstream version plus their patches). I don't know if anybody does that, though. The root of the problem is that we used to generate GIT-VERSION-FILE and source it as a Makefile snippet. That let the usual Makefile precedence rules override what was in the file. But after that commit, we use the script to directly generate the version _and_ replace the contents of asciidoc.conf, etc. I think the workaround here would be to manually override asciidoc's config like this: make ASCIIDOC='asciidoc -amansource="Git omitted" -arevdate=1970-01-01' But besides being horrible, I think that only works because asciidoc gives us a layer of indirection. The same problem exists for the built-in version-def.h. Try this: $ git checkout v2.47.0 $ make GIT_VERSION=super-secret [...] $ bin-wrappers/git version git version super-secret $ git checkout v2.48.0-rc0 $ make GIT_VERSION=super-secret [...] $ bin-wrappers/git version git version 2.48.0.rc0 I wondered if this would also leak out over the network via the agent string, but it doesn't seem to. I think because GIT_USER_AGENT is handled specially in the script; we accept the value from the environment and only default it to git/$GIT_VERSION. Perhaps the script should be doing the same for GIT_VERSION itself, along with GIT_DATE? -Peff