我有三个 git 存储库:
- 我的 git 服务器上的一个裸存储库
- 我笔记本电脑上的本地存储库(A)(我在这台机器上开发网页。)
- 托管服务器上的本地存储库(B)(我将其用作 http 服务器。)
我在裸存储库上设置了一个 post-receive(服务器端挂钩),以使存储库(B)从裸存储库中拉出,并让 git 服务器在我提交并从存储库(A)推送到裸存储库时发送通知电子邮件存储库。我在裸仓库做的post-receive文件如下:
#!/bin/sh
ssh -l MYUSER -i PRIVKEY www.HOSTINGSERVER.com "cd GITDIRECTORY;git pull"
. $(dirname $0)/post-receive-email
而且我还在裸存储库上设置了环境变量:
git config hooks.mailinglist "MyMailAddress"
git config hooks.announcelist "MyMailAddress"
git config hooks.emailprefix "FooBar"
echo FooBar > description
当我提交并推送到裸存储库时,我希望存储库(B)被拉出并且 git 服务器通过 post-receive-email 发送一封通知电子邮件,但是 post-receive 没有按我希望的那样工作。它有存储库(B)拉,但没有让 git 服务器发送任何电子邮件。我在 git 服务器上的日志中没有看到任何电子邮件错误。
当我注释掉 post-receive 的 ssh 部分时,我收到了一封电子邮件。当我注释掉 post-receive-email 部分时,repository(B) 正确提取。当 ssh 部分和 post-receive-email 部分都处于活动状态时,post-receive 只有 repository(B) pull 并且没有发送任何电子邮件。
当 ssh 部分和 post-receive-email 部分同时存在时,我不知道为什么 post-receive 不能按预期工作。
任何提示和评论表示赞赏。先感谢您。