2014-07-22 78 views
0

作爲臨時解決方案,我想自動同步兩個遠程git存儲庫。只是爲了有可能逐步遷移。這兩個存儲庫都將用於推送和提取。是否有可能使兩個回購處於同一狀態?我想到了兩個倉庫中的服務器端鉤子,這些鉤子會立即將更改推送到其他服務器。任何提示如何實現?自動同步兩個遠程git存儲庫

回答

0

對於git來說,真正的讀/寫多主機操作是不可能的。如果一個客戶端推送提交到第一個服務器上的分支,另一個客戶端將不同的提交推送到第二個服務器上的同一個分支,那麼誰能決定哪個提交成功?

你可能會說,那麼它應該合併,但如果一個提交只有一行x=1,而另一個x=2?這個決定只能由人做出。

如果您可以接受只有一個存儲庫可讀/寫,而其他存儲庫只讀,那麼這很容易實現。

+0

也許有可能在推送之前鎖定兩個服務器上的分支? 1)推送到第一個服務器,2)在兩個服務器上鎖定分支,3)如果成功,允許推送到第一服務器,4)與第二服務器同步,5)釋放所有內容。否則拒絕推送到第一臺服務器。不確定在git中是否可能有類似的東西。 – user23899823

+1

除push和fetch之外的所有git操作都是本地的,這就是它的快速性。您的解決方案需要始終向鏡像中的第二個合作伙伴詢問是否可以繼續進行幾乎任何操作。這將使git依賴於網絡延遲,更糟糕的是,第二臺服務器始終處於聯機狀態。如果服務器之間的網絡連接暫時丟失會怎樣?兩者都否認任何操作? – mvp

+0

所以這個想法仍然是在本地進行更改(沒有任何詢問/同步等)。仍然會有兩個例外推送和提取是第二個合作伙伴必須要求的。斷開的網絡連接應該是一個例外,在這種情況下,有人必須手動解決此問題。正如我所說,這應該是一個臨時解決方案。 – user23899823