使用Git push自动拉动远程服务器?

时间:2010-03-08 08:27:39

标签: php git github mirroring pull

这是我正在尝试做的事情:

我有一个GitHub存储库,其中一部分我想让Web可以查看。现在我已经在我自己的服务器上克隆了存储库并且运行良好,但为了使其保持最新,我必须手动登录并提取最新的更改。

我不确定这是不是最好的想法(或最好的方法),但我希望远程服务器在有人推送到存储库时自动拉出。当有人推动时,GitHub可以很容易地运行脚本,但是一旦有人这样做,我不确定如何拉动它。

我之所以使用PHP是为了简单,但只是做git pull这样的事情,因为权限自然不起作用。这是一个坏主意还是有另一种方式来实现我想做的事情?这似乎是一个常见的设置,但我不确定。

感谢。

3 个答案:

答案 0 :(得分:2)

如果很容易将脚本运行到 push ,你可以设置钩子来推送:

  • 从GitHub到您的网络服务器上的裸(空工作树)回购
  • 从您的网络服务器上的裸仓库到您的“实时”仓库(带有代表您网站的工作树)

然后你可以将它与你的“实时”回购中的钩子相关联以更新自身(通过“git merge”,将你的裸仓库的内容合并到你的“实时”仓库),无论你的裸仓还是什么。

你得到你想要的效果:任何推送到你的GitHub仓库(对于我认为的某个分支)将触发你的“实时”web服务器仓库的刷新。

答案 1 :(得分:1)

我做了一些几乎完全按照这种方式工作的东西,除了接收推送的“远程”仓库与之后拉动的仓库在同一台机器上。确实(并且重要)完全相同的用户组对两个存储库都具有权限。 (但这应该没问题;你不希望随机的人推你的回购。)无论如何我只是让git post-update钩子调用一个shell脚本来为我拉。一个棘手的问题是你必须清理环境(我使用了env -i,或者你可以取消设置与git相关的变量),否则拉动就会混淆。

答案 2 :(得分:0)

这是一个可能对你有帮助的WebHook。我认为它完全符合您的要求:Remote Server WebHook