如何同步多个git存储库,包括标签和分支?

时间:2011-09-07 03:06:34

标签: git repository

我在全国各地都有git repo服务器。当我移动到其中一个位置时,我想使用本地服务器进行推/拉。只需修改.git / config并更改origin分支即可管理。同时,我希望推送到本地服务器的所有分支和标签都可以在其他服务器上的所有git存储库中进行复制。

最好的设置方法是什么?

我应该修改.git / config以包含每个服务器都有url的远程“all”吗?这样,每次我执行git push all时,它都会推送到所有服务器。

我应该在每个git repo服务器上添加post-commit钩子以推送到其他服务器吗?这就不需要客户端的额外设置,因为他们只需要推送到任何服务器。

git clone --mirror怎么样?这有助于实现聚类效果吗?

1 个答案:

答案 0 :(得分:2)

您应该尽可能地在服务器端执行此操作,以免给任何开销带来负担。你必须小心使用post commit钩子进行递归。如果所有服务器都在提交时推送给所有其他服务器,则最终可能会导致所有服务器继续相互推送。但是,您可以利用此优势。每个服务器只需要担心服务器的虚拟权利。例如,A - >; B - > C - > D - > ... A.如果每个服务器都有一个帖子提交挂钩,首先看看下一个服务器是否是最新的,如果没有,则按下它,然后最终所有服务器都将同步。所以服务器A推送到B,推送到C,推送到D,检查A是否是最新的,所以什么也没做。

你可能会以这种方式结束边缘情况,并且不得不担心其他服务器失败的推送,但下一次提交会同步它。

您也可以使用rsync。