多个git主人

时间:2012-11-06 08:08:22

标签: git replication

两家公司A和B都使用git和中央存储库来围绕源代码提供项目wiki,文档等。假设他们都是由一个共同的母公司所有。

两家公司的用户都可以将提交仅推送到他们自己公司内的其他用户或中央服务器。

是否可以通过在两个中央服务器之间打开网络路由并在两个服务器之间复制每个项目(基于规则集,可能像一个名为.exportable的顶级文件一样简单)来扩展这种情况?开发人员必须能够在每一端提交,不能只是一面镜子。

我想如果有可能,接受提交的每个主人都必须检查提交是否会进入,锁定,联系到其他主人,锁定,检查它是否会提交然后从远端提交并删除锁(这种情况可能会扩展到两家以上的公司)。

我可以设想出各种各样的问题;但这有可能,怎么样,有例子吗?

编辑:也许项目可以是名称间隔,主人可以托管他们自己的项目,代理他们不拥有的其他主人?

2 个答案:

答案 0 :(得分:0)

我不知道有可能完全达到你所描述的内容,但肯定会非常复杂。

有一个更简单的解决方案。使用带有git存储库的ONE主服务器作为“主服务器”,将第二个服务器用作“备份/从服务器”。 Slave可以与master同步(你可以使用rsync或其他东西)。你必须在这种情况下禁止推送到奴隶(推动将只有主人)。这将提供两个具有完全相同内容的存储库(因为slave将定期从master获取更改)

在这种情况下,可以从主设备和从设备进行提取(当然也可以是拉取)。还可以从主服务器和从服务器克隆存储库。

在推送之前(假设您的源存储库是slave,您将需要使用命令git remote add添加第二个 - master - repository)。

简而言之:

  • 你有主人和奴隶回购你可以拉,取,克隆

  • 两者(节省带宽,克隆和提取的时间通常是 如果有许多开发人员正在开展项目,那么你可以

  • 仅推送到主控 - 这将消除复杂的锁定和同步 问题

答案 1 :(得分:0)

Gitolite在所谓的“重定向推送”中支持这一点:

  

通常,主设备(并且只有主设备)推送到从设备,并且从设备对用户是“只读”的。 Gitolite允许从服务器接收来自用户的推送并透明地将它们重定向到主服务器。

     

这简化了复杂设置中用户的操作,让他们使用本地镜像对所有存储库进行提取和推送访问。

http://sitaramc.github.com/gitolite/mirroring.html