Script para root a git pull como otro usuario

Tengo una secuencia de commands que me gustaría hacer hacer un truco dentro del directory git de otro usuario. Este script lo ejecuta el usuario raíz. Por ejemplo:

cd /home/username/GitProject sudo -u username -i git pull 

Cuando ejecuto esto, obtengo:

 fatal: Not a git repository (or any of the parent directories): .git 

¿Hay alguna manera de hacer que mi script haga un git pull como username ?

Pruebe sin la opción -i para sudo. Esa opción está documentada como el primer cambio al directory de inicio del usuario de destino, que deshace el cambio de directory que tan cuidadosamente hace antes. Alternativamente, use las opciones apropiadas para git para especificar el directory, algo como esto:

 sudo -u username -i git --git-dir=/home/username/GitProject/.git --work-tree=/home/username/GitProject pull 

Esto se puede hacer sin sudo. Esto supone que tiene keys ssh sin contraseña ya que está hablando de un script. Aquí está el fracaso:

 # git clone <user>@<host>:/path/to/repo Cloning into 'repo'... Permission denied (publickey). fatal: The remote end hung up unexpectedly 

Esto muestra que ~ se expande apropiadamente al homedir del usuario:

 # MYUSER=somebody # su - $MYUSER -c "echo ~" /home/somebody 

Y aquí está el command real utilizado para clonar en el directory de inicio junto con algunas testings adicionales:

 # su - $MYUSER -c "git clone <user>@<host>:/path/to/repo" Cloning into 'repo'... remote: Counting objects: 13, done. <..> # ls -l /home/$MYUSER/repo/.git/config -rw-r--r-- 1 somebody somebody 275 Nov 8 23:55 /home/somebody/repo/.git/config # su - $MYUSER -c "cd ~/repo; git remote -v" origin <user>@<host>:/path/to/repo (fetch) origin <user>@<host>:/path/to/repo (push) # su - $MYUSER -c "cd ~/repo; git pull" Already up-to-date.