Re: [PATCH] githooks: discuss Git operations in foreign repositories
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jan 9, 2023, 05:03 UTC
- Message-ID
- <CAPig+cRMdJy9FdL1_rwuMKcA3F3p4g3RF+0mkh12pqN0aUoUiw@mail.gmail.com>
- In-Reply-To
- <xmqqwn5wuwvs.fsf@gitster.g>
On Sun, Jan 8, 2023 at 11:58 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
> "Eric Sunshine via GitGitGadget" <gitgitgadget@gmail.com> writes: > > +If your hook needs to invoke Git commands in a foreign repository or in a > > +different working tree of the same repository, then it should clear local Git > > +environment variables, such as `GIT_DIR`, `GIT_WORK_TREE`, etc., which could > > +interfere with Git operations in the foreign repository since those variables > > +will be referencing the local repository and working tree. For example: > > + > > +------------ > > +local_desc=$(git describe) > > +foreign_desc=$(unset $(git rev-parse --local-env-vars); git -C ../foreign-repo describe) > > +------------ > > It is an excellent idea to add the above, but > > * I think adding it one paragraph earlier may make it fit better.
That was my initial choice, as well, and is where I initially inserted it, but moved it down a paragraph at the last moment. I'm happy to move it back up again.
Show 11 quoted lines
> * The paragraph, after which the above gets inserted, can use a bit
> of enhancement.
>
> That is, something like this?
>
> repository. An exception are hooks triggered during a push ('pre-receive',
> 'update', 'post-receive', 'post-update', 'push-to-checkout') which are always
> -executed in $GIT_DIR.
> +executed in $GIT_DIR. Environment variables like GIT_DIR and GIT_WORK_TREE
> +are exported so that the hook can easily learn which repository it is
> +working with.Yes, good idea, although I might phrase it something like:
Environment variables such as ... are exported so that Git
commands run by the hook can correctly locate the repository.