带有`git pull`的Git Hook`post-receive`通过命令行运行良好,但在自动挂钩时返回空字符串

Her*_*u S 2 git githooks

就像很多,我试图post-receive在服务器端远程git上创建一个钩子.以下是我的代码:

cd [LIVE SITE DIR] && git pull origin master | wall

我添加了wall它,以便可以播放,我可以收到通知.我注意到的一件事是,当我跑步时./post-receive,一切正常.

Broadcast message from root (Tue Oct  8 14:58:13 2013):

Updating 7ebd925..1a25791
Fast-forward
 html/header.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Run Code Online (Sandbox Code Playgroud)

但是,当我试图做一个git push,./post-receive似乎被调用但我收到了以下空广播:

Broadcast message from root (Tue Oct  8 14:53:32 2013):
Run Code Online (Sandbox Code Playgroud)

我试图将命令包括在内pwd,并且两种情况下一切正常.除了它似乎返回一个空输出.lspost-receivegit pull

已经完成了SO中提供的所有建议但无济于事:(.非常感谢任何帮助或建议.

谢谢!

Von*_*onC 9

确保你的post-receive钩子未设置GIT_DIR,或者仍然会引用钩子的git repo,而不是你刚cd进入的实时站点的git repo .

cd [LIVE SITE DIR]
unset GIT_DIR
git pull
Run Code Online (Sandbox Code Playgroud)

要么:

cd [LIVE SITE DIR]
env -i origin master
Run Code Online (Sandbox Code Playgroud)

要么:

cd [LIVE SITE DIR]
git --git-dir=[LIVE SITE DIR]/.git pull
Run Code Online (Sandbox Code Playgroud)