I have gitosis setup on my server and I’m trying to create a post-receive hook that will checkout changes to a working directory on the remote machine.
Initially I got an error saying cannot open /home/user/source/testing-local/.git/FETCH_HEAD: Permission denied so I changed the group ownership of the working directory’s .git folder to the git user.
Following this I got the error Host key verification failed which led me to check which user was running the hook, git of course (silly me!), so I setup a key in gitosis for the git user that gitosis is running under and enabled that in gitosis.conf. Now I’m getting the old Permission denied (publickey).
My post-receive hook looks like this:
#!/bin/bash
while read oldrev newrev refname
do
if [ "$refname" == "refs/heads/master" ]; then
WORKDIR=/home/user/source/testing-local
export GIT_DIR=$WORKDIR/.git
pushd $WORKDIR >/dev/null
id
git pull --quiet >/dev/null
fi
done
The id call is just to check which user I’m running as.
Is there an easier way to achieve this?! Have I missed something key in my setup?
You need to make sure of the value of the
$HOMEenvironment variable for the git user executing that hook.$HOME/.sshis where ssh will look for the private key during the handshake.Also, make sure the ssh directory on the gitosis end has the right permissions.
Finally see the “Permission denied (publickey)” section on GitHub, which repeat what I mentioned above about the
HOME: