Why doesn't setting GIT_WORK_TREE work in a post-commit hook?
I’m trying to use the following
post-commit hook to deploy to a particular directory after each successful commit:
#!/bin/sh export GIT_WORK_TREE=/var/www/example/ export GIT_DIR=/home/mark/test/.git/ git checkout -f
However, after committing I get the following error:
- Debug the execution of a git hook
- Git server hook to silently ignore changes to specific files
- remote: ImportError: No module named gitlab
- How to version git&gitolite hooks?
- git hook to create staging branch
- Modify file before commit with pre-commit hook
$ git commit -m 'An example commit.' fatal: Unable to create '/var/www/example/.git/index.lock': No such file or directory [master 0938e48] An example commit.
… as if the
GIT_WORK_TREE setting is being ignored. Why does setting this environment variable appear to be not working? I’m using git version 184.108.40.206.
One Solution collect form web for “Why doesn't setting GIT_WORK_TREE work in a post-commit hook?”
The problem here is that in
post-commit hooks (and also
GIT_INDEX_FILE environment variable is set to
isn’t documented in the githooks
documentation, but I’ve
posted elsewhere about the settings of environment variables and the
current directory in git
The effect of the
GIT_INDEX_FILE environment variable is described
in the ENVIRONMENT VARIABLES section of the
git man page as:
This environment [variable] allows the specification of an alternate index file. If not specified, the default of
… and for some reason, in this situation,
GIT_INDEX_FILE is being
used relative to
To make the hook work as you would expect, you just need to unset
GIT_INDEX_FILE, so your hook would look like:
#!/bin/sh unset GIT_INDEX_FILE export GIT_WORK_TREE=/var/www/example/ export GIT_DIR=/home/mark/test/.git/ git checkout -f