2010-03-08 66 views
10

這是我想要做的:使用Git推動自動拉動遠程服務器?

我有一個GitHub存儲庫,其中的一部分,我想讓網頁可見。現在我已經在自己的服務器上克隆了存儲庫,並且運行良好,但爲了保持最新,我必須手動登錄並提取最新的更改。

我不確定這是否是最好的主意(或最好的方法),但我希望遠程服務器在有人推送到存儲庫時自動進行提取。當有人推送時,GitHub可以很容易地運行一個腳本,但是我不確定一旦有人這麼做,該如何解決。

我爲了簡單而使用PHP,但只是做了類似git pull這樣的操作,因爲權限而自然不起作用。這是一個壞主意,還是有另一種實現我想要做的事情的方式?這似乎是一個共同的設置,但我不確定。

謝謝。

回答

2

如果很容易運行腳本,你可以設置鉤來推動:

  • 從GitHub到裸(空worktree)Web服務器
  • 從裸露的回購協議回購在您的網絡服務器上到您的「實時」回購(帶有代表您的網站的工作樹)

然後,您可以將其與「實時」回購鉤掛鉤以通過「git合併」將裸回購的內容合併到y中我們的「活」回購),只要您的裸回購推動任何東西。

你會得到你想要的效果:任何推到你的GitHub倉庫(對於某個分支我想)會觸發你的「活」Web服務器倉庫刷新。

1

我已經做出了幾乎完全按照這種方式工作的東西,除了接收推送的「遠程」回購與隨後回購的回購商在同一臺機器上。確實相同的一組用戶對這兩個存儲庫擁有權限是真實的(也是重要的)。 (但是這應該沒問題,你不希望隨機的人推動你的回購。)無論如何,我只需要git post-update鉤子調用一個shell腳本來爲我做拉。最棘手的一點是你必須清理環境(我使用了env -i,或者你可以取消設置與git相關的變量),否則拉就會變得混亂。