git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3] To make GIT-VERSION-FILE, search for git more widely

From
Junio C Hamano <gitster@pobox.com>
Date
May 13, 2009, 19:32 UTC
Message-ID
<7vy6t03ik0.fsf@alter.siamese.dyndns.org>
In-Reply-To
<op.utva2vxh1e62zd@balu>
"Matthias Andree" <matthias.andree@gmx.de> writes:
Show 14 quoted lines
> Am 09.05.2009, 18:55 Uhr, schrieb Junio C Hamano <gitster@pobox.com>:
>
>> "Matthias Andree" <matthias.andree@gmx.de> writes:
>>
>>>> Fine then.  Or you could just append "." to the $PATH ;-)
>>>
>>> "." in the super user's PATH? Cool stuff, and so innovative.
>>
>> I didn't mean to suggest PATH=$PATH:. *in the user's environment* ;-).
>> You do that inside GIT-VERSION-FILE, which is essentially the same thing
>> as running ./git$X from there.
>
> No, it is not -- the scope of the GIT variable is much narrower than
> doing  PATH=$PATH:. in the script.

If you cannot trust the top of your build directory you build git in (that is why PATH=$PATH:. while running GIT-VERSION-FILE may be scary) and anticipate a malicious third-party can somehow put random things (like "test" or "cat", perhaps) there, you are already lost, don't you think?

That is where my "essentially the same" came from.
> For any approach taken, we'll have to touch both the shell and the
> Makefile, unless we want to manually redo things in the
> GIT-VERSION-GEN  script that were already done automatically or
> programmatically in  Makefile.

I actually like the rationale you mentioned in the thread (perhaps in the original proposed commit message as well) that we should ask the freshly built git to describe the version if available, falling back to whichever git of random vintage found on the original $PATH.

If it weren't for $X [*1*], my preference would have been (as I said in the discussion) to run ./git if available locally.

But I think your "deal with details like $X to figure out the name of the freshly built git binary is in the Makefile, and pass it via GIT variable to GIT-VERSION-GEN" is a sensible approach. I do not remember if your patch gave precedence to an installed git on the original $PATH or a freshly built one, though---the precedent probably does not matter in practice, and favoring the one found on $PATH over freshly built one does have an advantage if we were to support cross compilation (I have a suspicion that the current setup does not).

Thanks.
[Footnote]

*1* ... and perhaps VPATH as you mentioned earlier, but I do not know if our current Makefile is set up to allow a layout that separates build products from the source material, as I've never attempted to build git in a setting where VPATH is involved.

Previous: Matthias AndreeNext: Nanako Shiraishi
Message 14 of 22 in “To make GIT-VERSION-FILE, search for git more widely”
  1. To make GIT-VERSION-FILE, search for git more widelyMatthias Andree, May 7, 2009
  2. Michael J GruberMay 7, 2009
  3. Matthias AndreeMay 7, 2009
  4. Michael J GruberMay 7, 2009
  5. Matthias AndreeMay 7, 2009
  6. Junio C HamanoMay 8, 2009
  7. Matthias AndreeMay 8, 2009
  8. Junio C HamanoMay 8, 2009
  9. Matthias AndreeMay 8, 2009
  10. Junio C HamanoMay 9, 2009
  11. Francis GaliegueMay 9, 2009
  12. Matthias AndreeMay 9, 2009
  13. Matthias AndreeMay 13, 2009
  14. Junio C HamanoMay 13, 2009
  15. Nanako ShiraishiJun 2, 2009
  16. Junio C HamanoJun 2, 2009
  17. Johannes SixtJun 2, 2009
  18. Matthias AndreeJun 3, 2009
  19. To make GIT-VERSION-FILE, search for git more widelyMatthias Andree, Jun 4, 2009
  20. Junio C HamanoJun 4, 2009
  21. Matthias AndreeJun 4, 2009
  22. Johannes SixtMay 8, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.