【问题标题】:Automatically update local github repository on master branch change在主分支更改时自动更新本地 github 存储库
【发布时间】:2020-02-11 13:51:49
【问题描述】:

我有一个 github 存储库,它存在于几个不同的主机上。我试图弄清楚是否有某种方法可以让两个主机自动下拉对主分支的任何新更改,而无需登录并自己发出pull 命令,同时我仍然需要能够在极少数情况下从这些主机推送更改。

从我所看到的情况来看,我相信我应该用 Hooks 来研究一些东西,但很难理解它们是如何工作的。似乎服务器端 post-receive 可能是我正在寻找的,但不确定。

有没有人有让这个工作的经验?

【问题讨论】:

    标签: git githooks


    【解决方案1】:

    Git 挂钩将允许您在发出 git pull 命令后做额外的事情,但不能定期运行 git pull。我建议使用 git 本身之外的东西来进行这种常规拉动。执行此操作的 cron 条目如下所示:

    * * * * * cd /my/directory/path && git pull >> /var/log/gitcron.log 2>&1  # Pull gitrepo every minute, logging output to /var/log/gitcron.log
    

    请记住,如果您有这样的常规 pull 设置,rebase 或其他重写目标分支中历史记录的东西将导致具有 cron 的机器在没有人工干预的情况下处于损坏状态。

    【讨论】:

    • cronjob 实际上可能是一个不错的选择,每分钟发出一次 pull 是否有缺点?
    • 不。 git 的内部结构使它成为一个非常高效的操作。
    • 太棒了。我将不得不查看git pull 默认值,看看我在这些特定主机上进行代码更改可能会影响解决方案,但我绝对认为这将是我的方式。谢谢。
    【解决方案2】:

    我遇到了同样的问题,并使用简单的 http.server 例程创建了一个 python 脚本。 这里是存储库(仅内置库): https://github.com/TinKurbatoff/github-webhook-autopull

    你可以在这里设置一个 webhook: https://github.com/<github_user_name>/<your_repo>/settings/hooks

    每次更新此存储库时,它都会调用您的网络服务器。

    即使您将 repo 副本保存在本地 - 您也可以在您的家庭/工作计算机上的某个端口上设置此侦听器,并通过 IP 调用您的计算机(您可能需要在家庭路由器上设置端口转发)。

    【讨论】:

      猜你喜欢
      • 2010-11-29
      • 2019-11-24
      • 2021-07-31
      • 2011-01-02
      • 2011-05-19
      • 2019-06-17
      • 2017-04-03
      相关资源
      最近更新 更多