2011-05-25 109 views
5

我写gitosis的中央资料库执行git的命令

这是直接从中央存储库更新到测试环境

nano /var/git/repositories/holding.git/hooks/post-update

#!/bin/bash 

cd /var/vh/holding; 
git reset --hard; 
git checkout testing; 
git pull; 

这里我所得到的后推后钩推我的客户端(开发虚拟机)

# blah ... 
Counting objects: 57, done. 
Compressing objects: 100% (24/24), done. 
Writing objects: 100% (30/30), 3.42 KiB, done. 
Total 30 (delta 18), reused 0 (delta 0) 
fatal: Not a git repository: '.' 
fatal: Not a git repository: '.' 
fatal: Not a git repository: '.' 
fatal: Not a git repository: '.' 
To [email protected]:holding.git 
    233b5a2..0f46cd8 testing -> testing 

显然,我试图告诉git,它应该在哪里拉,失败。

在bash脚本中为指定的工作副本运行git命令的正确方法是什么?

+0

这可能,甚至可能记录(需要检查手册页)GIT_DIR设置为'。'。同时处理你的钩子功能.... – sehe 2011-05-25 10:35:31

回答

5

如前所述herethere,你可以先所有Git命令有:

env -i 

,以确保有没有副作用,例如,一个GIT_DIR环境变量可能先前已经组。
env -i或简单地:unset GIT_DIR

0

/var/vh/holding git存储库?即你运行了git init,设置你的遥控器,设置它来跟踪你的hold.git目录等。此外,如果您不是从您推动的同一回购协议中获得回报,那么您不应该需要resetcheckout