0

两家公司 A 和 B 都使用带有中央存储库的 git,以允许围绕其源代码创建项目 wiki、文档等。假设它们都归一个共同的母组织所有。

两家公司的用户只能将提交推送给他们自己公司内的其他用户,或者他们的中央服务器。

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

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

我已经可以设想到各种各样的问题;但这可能吗,如何,有例子吗?

编辑:也许项目可以命名空间并且主人可以托管他们自己的项目并代理其他主人为他们不拥有的项目?

4

2 回答 2

0

Gitolite 在它所谓的“重定向推送”中对此提供了支持:

通常,一个主控(并且只有一个主控)推送到一个从属,而从属对用户是“只读的”。Gitolite 允许从站接收来自用户的推送并将它们透明地重定向到主站。

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

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

于 2012-11-11T19:36:13.823 回答
0

我不知道是否有可能完全实现您所描述的,但可以肯定这将非常复杂。

有一种更简单的解决方案。使用带有 git 存储库的一台主服务器作为“主服务器”,另一台作为“备份/从属服务器”。从站可以与主站同步(你可以使用 rsync 或其他东西)。在这种情况下,您必须禁止向从属推送(推送只能向主控推送)。这将提供两个具有完全相同内容的存储库(因为从站将定期从主站获取更改)

在这种情况下,从主机和从机都可以进行获取(当然还有拉取)。也可以从 master 和 slave 克隆存储库。

在推送之前(假设您的原始存储库是从属存储库,您需要使用命令 git remote add 添加第二个 - 主存储库)。

简而言之:

  • 你有主库和从库,你可以从中提取、获取、克隆

  • 两者都
    可以

  • 只推送到 master - 这将消除复杂的锁和同步问题

于 2012-11-06T08:29:00.237 回答