2013-03-04 68 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])