Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What user runs the git hook?

Tags:

git

hook

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?

like image 901
atp Avatar asked Apr 13 '10 04:04

atp


People also ask

What directory do Git hooks run in?

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.

Are Git hooks cloned?

No, there isn't any clone hook.


1 Answers

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).

like image 103
Cascabel Avatar answered Oct 08 '22 04:10

Cascabel