On Sun, Jan 8, 2023 at 11:58 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > "Eric Sunshine via GitGitGadget" <gitgitgadget@xxxxxxxxx> 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. > * 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.