I have a post-update hook on my server, such that when I
git push
it does a pull on the live web directory. However, while the push always succeeds, the post-update hook sometimes fails.
The hook is pretty simple:
#!/bin/sh # # An example hook script to prepare a packed repository for use over # dumb transports. # # To enable this hook, rename this file to "post-update". cd /var/www env -i git pull
I'm pushing updates from a variety of places, but sometimes I have to login as root on the server and manuall do a
env -i git pull
I only have to do it 20% of the time though. Any ideas why it would fail randomly? Also, how would I get it to log error messages, since it might be running as someone who can't write to the file system?
By default the hooks directory is $GIT_DIR/hooks , but that can be changed via the core. hooksPath configuration variable (see git-config[1]). Before Git invokes a hook, it changes its working directory to either $GIT_DIR in a bare repository or the root of the working tree in a non-bare repository.
No, there isn't any clone hook.
The hooks are run as the user doing the push. If you have some kind of pre-made setup, that may be a user like git
or gitosis
, or it may be you. Just look at how you have the remote configured. (git remote show <remote-name>
or just examine .git/config if you don't know) Presumably you're pushing via SSH, and there's a username@hostname in the URL.
P.S. It's pretty quick to demonstrate this - just clone a repo locally, throw a post-update hook in with an echo $USER
or something similar, and try pushing as yourself or a different user (directly or through ssh).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With