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

Re: Stop prepending /usr/bin to hooks PATH, or document it very clearly

From
Ciro Santilli <ciro.santilli@gmail.com>
Date
Oct 18, 2014, 16:45 UTC
Message-ID
<CAFXrp_fspAC1Q2NOzpFoxG=pQ1SsR3VaRf+BGx9V_dxUu7=diw@mail.gmail.com>
In-Reply-To
<20141018144924.GA17925@inner.h.apk.li>
On Sat, Oct 18, 2014 at 4:49 PM, Andreas Krey <a.krey@gmx.de> wrote:
Show 15 quoted lines
> On Fri, 17 Oct 2014 13:25:42 +0000, Ciro Santilli wrote:
> ...
>> The problem is that the `/usr/bin` breaks "interpreter version manager
>> systems" like RVM, rbenv, virtualenv, etc. since people will write
>> hooks like:
>>
>>     #!/usr/bin/env ruby
>>
>> and the `/usr/bin` ruby will get run instead of the managed one
>
> And that is the right thing to do. What ruby to execute with is
> a property of the hook script, not of the virtualenv a user happens
> to be in. If you want virtualenvs, you should set up the right one
> within the hook script.
>

I'm sure what you say has a good rationale, but can you give a more concrete example where PATH prepending is desirable?

Use cases that I have seen where it is surprising and undesirable:
- I want binaries I manually installed under `/usr/local/bin` to have
precedence over the system defaults under `/usr/bin`, so I modify the
PATH on my `.profile`. But then I run a hook and things fail: so in
each hook I have to do export PATH="$THE_GOOD_PATH", which makes me
repeat the same thing many times.
- Locally I use RVM. But the CI uses rbenv. Next year, there will be
another version manager. If we follow the rule that when I invoke
`system('git something')` it runs in the same environment as current,
I don't need to do anything. But if environments change, I'd have to
either write extra code for each manager, or install dependencies on
multiple versions of the interpreter.

For now I'm going to go with `export PATH="$THE_GOOD_PATH && ruby real_script.rb"`.

Show 11 quoted lines
> ...
>> - documenting this behavior *very* clearly on `man githooks`
>
> That would still be a good thing to do.
>
> Andreas
>
> --
> "Totally trivial. Famous last words."
> From: Linus Torvalds <torvalds@*.org>
> Date: Fri, 22 Jan 2010 07:29:21 -0800
Previous: Andreas Krey
Message 3 of 3 in “Stop prepending /usr/bin to hooks PATH, or document it very clearly”
  1. Ciro SantilliOct 17, 2014
  2. Andreas KreyOct 18, 2014
  3. Ciro SantilliOct 18, 2014

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.