Re: Running 'git worktree add' in 'pre-commit' hook
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- May 16, 2019, 11:25 UTC
- Message-ID
- <CACsJy8DnkjuZD-9pbhAsFo16jHKt8U831LLxb3-nCQP5_FOmtA@mail.gmail.com>
- In-Reply-To
- <CAJFQqN+Z9eX6onaj8vVSqpvf-nOC7-Y0Un4NLUie6x6bGfmvZA@mail.gmail.com>
On Tue, May 14, 2019 at 9:53 PM Cosmin Polifronie <oppturbv@gmail.com> wrote:
Show 17 quoted lines
> > Hello! I am trying to run 'git worktree add <path> HEAD' in the > 'pre-commit' hook, more specifically in a Python script that is being > called from the hook. When doing so, I am greeted with the following > error: > > On Windows 10: > Preparing worktree (detached HEAD cbfef18) > fatal: Unable to create 'C:/Users/meh/Desktop/abc/.git/index.lock': No > such file or directory > > On Arch Linux: > Preparing worktree (detached HEAD cbfef18) > fatal: Unable to create '/home/cosmin/Downloads/abc/.git/index.lock': > Not a directory > > Is it forbidden to call this command from a hook?
pre-commit hook sets GIT_INDEX_FILE to this "index.lock" so you have the latest index content (which is not the same as from $GIT_DIR/index). This variable will interfere with any commands that work on a different worktree.
So you probably can still make it work by backing up $GIT_INDEX_FILE (in case you need it), then unset it before you use "git worktree" (or cd to it if you keep a permanent separate worktree for pre-commit activities). To make sure you don't have similar problems, you probably should do "env | grep GIT" from the hook and see if any other variables are set.
Show 6 quoted lines
> If yes, what kind of > alternatives do I have? I need to make a copy of the repo in its HEAD > state, process it and then decide if I will pass the current commit or > not. > > Thanks! :)
-- Duy