2010-01-21 7 views
2

J'ai un dépôt vide sur notre serveur de développement ici, et un clone de cela ailleurs sur le disque . J'ai écrit un petit script de post-mise à jour comme suit:Le hook de post-mise à jour de Git s'exécute en poussant vers une machine distante à partir de TortoiseGit, mais pas depuis la ligne de commande sur la même machine

#!/bin/sh 
echo Updating vhosts.git at `date` >> /root/vhosts.log 
cd /usr/local/www 
echo Updating `pwd` vhosts as `whoami` 
OLD_GIT_DIR=$GIT_DIR 
GIT_DIR=.git 
git pull origin master 
GIT_DIR=$OLD_GIT_DIR 
apachectl restart 

Lorsque vous appuyez sur le repo nu de mon ordinateur à l'aide TortoiseGit, je reçois la sortie attendue:

git.exe push "origin" master:master 

Counting objects: 5, done. 
Compressing objects: 100% (3/3) 
Writing objects: 100% (3/3) 
Writing objects: 100% (3/3), 346 bytes, done. 
Total 3 (delta 1), reused 0 (delta 0) 
Updating /usr/local/www vhosts as root 
From /root/vhosts 
* branch   master  -> FETCH_HEAD 
Updating 0a48898..c334796 
Fast forward 
vhosts.conf | 2 +- 
1 files changed, 1 insertions(+), 1 deletions(-) 
[Thu Jan 21 10:49:39 2010] [warn] module dav_module is already loaded, skipping 
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName 
To [email protected]:vhosts.git 
    0a48898..c334796 master -> master 

Cependant, si J'utilise le en ligne de commande git pour pousser le même clone sur le même serveur de dev, avec la même commande, même, il semble que le hook ne fonctionne pas!

C:\www\bugs_vhosts>git.exe push "origin" master:master 
Counting objects: 5, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 320 bytes, done. 
Total 3 (delta 1), reused 0 (delta 0) 
To [email protected]:vhosts.git 
    c334796..9bedd46 master -> master 

Est-ce que quelqu'un sait s'il y a un paramètre ou quelque chose d'autre que j'ai besoin de changer pour déclencher le hook après la mise à jour?

Répondre

2

Lorsque vous utilisez la ligne de commande, il suffit de faire ceci:

git.exe push origin master 

Ensuite, la post-mise à jour dans le serveur sera exécuté.

+0

Mais c'est ce que je faisais sur la ligne de commande. Si cela fonctionnait comme il se doit, je n'aurais pas posé cette question. Désolé, il me manque quelque chose ... – Drarok

+1

Vous écrivez 'master: master' alors que vous ne devez écrire que' master'. –

+0

Pourquoi cela fonctionne-t-il? –