Git在同一台服务器上发布两个repos的post-receive钩子

时间:2015-01-09 19:06:39

标签: wordpress git githooks

我正在Wordpress中开发一个网站,我已经为它构建了一个模板和一个插件。对于我的git工作流程,我希望能够在服务器上使用两个不同的存储库单独跟踪模板和插件。现在我将模板提交推送到服务器上的一个裸仓库,然后执行这个post-receive钩子:

#!/bin/sh
export GIT_WORK_TREE=/home/user/public_html/wp-content/themes/custom_theme
export GIT_DIR=/home/user/public_html/custom_theme.git
git checkout -f master

当我按下时,文件显示在主题文件夹中。但是当我试图为插件设置完全相同的东西时,我得不到任何结果。这是插件裸仓库的后接收钩子:

#!/bin/sh
export GIT_WORK_TREE=/home/user/public_html/wp-content/plugins/custom_plugin
export GIT_DIR=/home/user/public_html/custom_plugin.git
git checkout -f master

当我推送到插件裸仓库时,实时插件目录仍为空,我甚至没有看到任何错误日志。这是否与在同一台服务器上使用两个repos有关?我尝试在两个钩子的开头添加“unset GIT_DIR”,看看是否有任何区别(它没有)。我还检查了文件权限,并且两个钩子都可以为所有用户执行。至少有一种方法可以手动运行插件挂钩并查看shell响应是什么吗?

编辑: 我将“echo working 1>& 2”添加到钩子中以测试它是否触发(根据torek的建议)。在提交测试更改并推送到服务器裸仓后,这就是我得到的:

stdin: is not a tty
Counting objects: 5, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 376 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Already on 'master'
remote: working
To user@dev.mysite.org:public_html/custom_plugin.git
   f1cc0bb..9a71b5b  master -> master

所以好像钩子正在触发?我正在获得上面的“远程:工作”输出行。我不确定所有的输出意味着什么。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

在盯着它看了一天后,似乎现在工作得很好。