2013-03-04 152 views
11

Github自动将任何更新推送到远程服务器的设置是什么?使Github在接收更新时推送到远程服务器

这对于维护Github上的代码库并让网站运行该代码库很有用。

  1. 我在自己的电脑上有我的回购,这是我工作的地方。

  2. 我在我的本地仓库上进行了修改,并将它们推送到我的Github仓库。

  3. 我想要我的Github回购,然后将这些更改推送到我的远程服务器。

我一直在研究整天,并使用'钩'听起来很合理。也许在Github上使用'post-receive'钩子,然后向我的远程服务器运行一个push命令。

有什么建议吗?

回答

10

据我所知github不允许你定义“真正的”钩子。像收到后一样。相反,他们向开发者提供了一个名为webhook的东西。你可以用这个做什么,只要有一个推送到你的仓库,就向你指定的任何URL发出web请求。

所以你可以做的是:在你的远程git服务器上设置一个web服务器,并配置github在post-receive上对它进行http调用。每当github通知你的远程服务器,从github上拉它。

在这里看到关于如何使用网络挂接:https://help.github.com/articles/post-receive-hooks

附: 一个真正的钩机器人主义已经成为github的一个可能的安全漏洞,因为它允许你在他们的服务器上执行自定义代码。所以他们做出了一些不允许你执行任何事情的东西,但仍然允许你做任何你想做的事情。

7

为了说明Yervandanswer(upvoted),认为这peligangit作为一个简单的HTTP服务器的例子(您可以安装在您的亚马逊EC2实例),这将:

  • 启动一个简单的HTTP服务器。
  • 监听与GitHub webhook
  • 一个POST将拉低新提交

workflow

这个库能卖,然后重置origin/master的主要分支。
这是一种方法。 (见githook.py

def hard_reset_repos(self): 
    self.server.source_repo.fetch([self.server.source_repo.origin]) 
    self.server.source_repo.reset(['--hard', self.server.source_repo.originMaster])