12

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

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

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

为了简单起见,我使用了 PHP,但是由于权限的原因,只是做一些git pull自然而然的事情是行不通的。这是一个坏主意还是有另一种方法可以实现我想做的事情?这似乎是一个常见的设置,但我不确定。

谢谢。

4

3 回答 3

3

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

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

然后,您可以将其与“实时”存储库上的挂钩关联以更新自身(通过“git merge”,将裸存储库的内容合并到“实时”存储库),只要您的裸存储库推送任何内容。

你得到了你想要的效果:任何推送到你的 GitHub 存储库(我想是某个分支)都会触发你的“实时”网络服务器存储库的刷新。

于 2010-03-08T11:30:02.530 回答
1

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

于 2010-04-21T05:04:07.393 回答
0

这是一个可能对您有所帮助的 WebHook。我认为它完全符合您的要求:远程服务器 WebHook

于 2013-11-15T22:05:00.523 回答