【问题标题】:Setting up a git hook to automatically git pull on a remote server设置一个 git hook 以在远程服务器上自动 git pull
【发布时间】: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


【解决方案1】:

如果设置 webhook 监听器对您来说不实用(例如adnanh/webhook),您可以检查是否可以直接从your own local repo to two repos 推送:GitHub 和 Ubuntu一。
然后只有这样你的 post-receive 钩子才会被激活。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    相关资源
    最近更新 更多