2015-11-04 54 views
3

有沒有辦法設置一個存儲庫來「鏡像」遠程,以便我總是擁有最新的工作副本?如何始終擁有git repo的最新工作副本?

我想我可以簡單地克隆它,並偶爾(無需推),但理想情況下,我希望每個推到遠程導致「鏡像」更新。

原因是我想擁有最新的工作副本,以便我可以輕鬆測試回購的當前狀態。

我主要關心的只有一個分支,但如果我擁有全部,那就更好了。

+0

google'git post post hook' –

+0

所以你建議在後接收掛鉤中調用rsync? – ventsyv

回答

0

有沒有內置的「推送通知」,即,沒有內置的方法,通過它可以機中號(以下簡稱「主副本」機)上宣佈庫[R 中號是「主人」,與存儲庫R 0​​S在機器S(「奴隸」)鏡像它。一種典型的解決方案是通過在其上運行git remote update定期(也許每5分鐘)使機器S輪詢M。如果您設置S拒絕推送,並且其fetch行爲M設置爲+refs/*:refs/*,它將是一個真正的鏡像;如果您每隔5分鐘從一個cron條目中取出,它最多隻會過期5分鐘。

在之前的工作中,我們正在嘗試在主機上使用輕量級(ish)協議(ZeroMQ,RabbitMQ或其他),向(多個)從機發送「推送通知」,以便我們可以切割輪詢間隔降低(可能一直爲零,儘管在從屬服務器關閉或網絡分區一段時間之後,有一些引導問題)。

+0

輪詢是一個不錯的解決方案,但我覺得一個涉及鉤子的解決方案可能會更有效率,因爲據我所知,這將防止需要每5分鐘輪詢。 –

+0

是的,因此有推送通知的想法。我打算寫一個post-receive鉤子來做到這一點,但是在我改變工作之前從來沒有做過。 (它比看起來更復雜,因爲我們有幾十個存儲庫和多個從站點。) – torek

相關問題