Git - post-receive hook with git pull "Failed to find a valid git directory"
It's very weird but when setting a git repository and creating a post-receive hook with:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
the hook runs indeed, but it never manage to run git pull properly:
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
so I'm asking myself now, how it's possible to make the hook update the clone with post-receive?
in this case the user running the processes is the same, and its everything inside the user folder so I really don't understand...because if if I go manually into
cd ~/websites/testing
git pull
it works without any problem...
any help on that would be pretty much appreciated
Thanks a lot
While the hook is running, GIT_DIR
and (if the worktree was defined explicitly) GIT_WORK_TREE
are set. That means your pull won't run with the second repository in the directory you changed to.
Try git --git-dir ~/websites/testing/.git --work-tree ~/websites/testing pull
; or unset git's repo-local environment with this:
unset $(git rev-parse --local-env-vars)
More info on these environment variables in man 1 git.
One thing I experienced was that using the post-update
hook '--git-dir' worked great but git was still complaining about a missing working tree (despite using '--work-tree')
In short, this did not work:
git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull
whereas this worked:
cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull
Doesn't this work?
cd /home/smb/websites/testing
env -i git pull
Edited
Better still
cd /home/smb/websites/testing
unset GIT_DIR
git pull