【发布时间】:2018-08-29 21:00:09
【问题描述】:
我有一个远程 ubuntu 服务器,用于存储来自 GitHub 的代码的实时版本。每次我使用 git 从本地计算机推送时,我都希望远程服务器自动拉取代码。其他指南通常谈论将 php 文件添加到 web 目录,尽管我的服务器没有直接的 HTTP URL 或 www 目录,因为它不用于网站。
我也尝试过创建post-receive 钩子,但没有结果,我不知道我是否做错了。
我在 .git/hooks 中的接收后文件:
#!/bin/bash git --work-tree=/home/folder/anotherFolder/repo --git-dir=/home/folder/anotherFolder/repo checkout -f
我想指出,我也不是唯一将推送到存储库的人,因此它应该支持来自不同计算机的提交。
【问题讨论】:
-
远程服务器是否运行 linux 变体?你有管理权限吗?
-
对不起,我应该提到,它是一个 ubuntu 服务器,是的,我拥有完全的管理权限。
-
所以你想推送到 Github 并让这个辅助服务器自动拉取?您的选择是 Github 中的钩子(如果无法通过 Github 访问辅助服务器,可能很难),或者在辅助服务器上运行的 cronjob。
-
远程服务器可以很好地访问 GitHub,它只是设置了我遇到问题的钩子本身。我真的不想使用 cronjob,因为它似乎效率低下且不准确 - 推送代码后应该立即进行拉取。
-
您最好的选择可能是查看 webhooks api:developer.github.com/webhooks。您可以在设置下将 webhook 添加到 repo。为此,您只需要在服务器上的静态端口上运行一些服务,全世界都可以访问,监听来自 api 的一个 POST 请求。
标签: git github ubuntu-16.04 webhooks githooks