如何跨两个服务器同步Git存储库

时间:2010-11-26 10:38:34

标签: git repository-design synchronisation

我正在寻找一种在(2)服务器之间自动同步Git存储库的方法,以便它们可以从第三点进行互换。

情况如下: 我们在所有项目中大量使用git,并且一些存储库的大小增长很快。目前我们有一个中央服务器,每个人都在推/拉这个/从这个。然而,这一切都通过互联网连接,因此不是最快的方式。

理念: 将另一台服务器放在办公室,并将所有git存储库放在那里供办公室使用。该服务器需要与在线服务器同步。 用户甚至不会通过某些dns调整知道他们使用哪一个,因此当连接到那里的网络时,在线服务器存储库的地址会解析为内部服务器存储库。

有人在那里做过类似的事吗?或者是否有更简单的方法来实现目标。

2 个答案:

答案 0 :(得分:4)

我会看到使用SSH protocol轻松完成这样的机制(意味着像gitolite这样的框架在LAN repo和WAN http repo上都已到位),因为这样你就可以轻松扩展ssh forced command 机制:

  • 首先检查两个回购是否同步
  • 如果本地仓库比远程仓库更新,则拒绝该命令
  • 将本地仓库与所需的远程仓库同步

使用 hooks 执行此操作会更复杂,需要仔细设置每种服务器端挂钩,以便始终保持同步机制。< / p>

答案 1 :(得分:0)

Gitolite有一个镜像存储库的功能。您可以将办公室中的那个设置为主设备,将在线设备设置为从设备,并允许推送到任一个。