2011-03-06 46 views
5

我們正在考慮將源碼版本控制系統從Subversion轉換爲Git。我們正在推動當前設置的限制,並認爲我們會更好地使用git。如何設置「git cluster」

我們一直在辦公室使用主服務器,並在我們的數據中心運行一個鏡像。該鏡像被配置爲代理到主服務器的傳入提交。這樣,兩臺機器就像是一個單獨的存儲庫一樣運行,使我們能夠在辦公室時承諾辦公室機器,或者在我們位於其他地方時承諾數據中心機器。

有兩臺機器爲我們節省了很多帶寬和提高速度,這對我們來說,因爲我們使用Subversion作爲我們的首要部署工具也很重要。

最近我們在印度收購了一家開發商店,他們將使用相同的代碼。由於帶寬限制和延遲問題,在印度開一面鏡子也很方便。

當我們切換到Git時,我們正在尋找類似的設置。我怎樣才能讓多個git倉庫作爲一個?理想情況下,我希望提交到存儲庫以自動傳播到同一存儲庫的其他服務器。

+0

如果您想使用gitolite,其文檔中有關於如何設置鏡像的一些指導:https://github.com/sitaramc/gitolite/blob/pu/doc/mirroring.mkd – Cascabel 2011-03-06 22:28:47

+0

您唯一正如它在該文件中所說的那樣,不能真正做到讓用戶推送到多個存儲庫。這是令人頭疼的祕訣 - 想象如果兩個用戶同時推送到不同的回購站會發生什麼情況。幸運的是,更重要的操作是提取(特別是克隆),而鏡像將很好地工作。 – Cascabel 2011-03-06 22:35:55

+0

已更新gitolite鏡像鏈接:http://gitolite.com/gitolite/mirroring.html – Paul 2013-07-17 16:50:42

回答

1

延遲對你來說不會是一個問題,因爲你會在本地提交。你根本不需要做任何事情。不過,推拉可能會變慢。如果這讓你感到困擾,你可以做很多事情。

我們使用github作爲我們的「權威」樹,但我們不會推到那裏(我們的code review system),我們的建造者(和一些開發人員)不會從那裏拉。

每次推送到github時,都會觸發post-receive hook到我的gitmirror項目的一個或多個實例,該項目立即進行鏡像提取。這些鏡像通常在github的大約一秒內更新。如果中央倉庫發生任何事情,很可能其他人甚至不會注意到它。

+0

我應該注意到,我最初寫gitmirror是爲了在github之外使用,我使用post-commit掛鉤來通知不同的服務器事情已經更新,更新應該被複制。 github在這裏並不是一個重要的部分,雖然post-receive hook讓事情變得非常簡單。 – Dustin 2011-03-06 21:51:40