同步git信息库,而彼此之间无权访问,也无法从任何系统访问两者

时间:2019-04-10 15:24:22

标签: git

我们所处的团队分散,团队成员属于不同公司,因此无法访问彼此的服务器。我们正在进行一个项目,并且有一个需要同步的git存储库。团队的两个部分(出于简便起见,都称他们为A团队B)。

  • 团队A有权访问服务器A,但不能访问服务器B
  • 团队B有权访问服务器B,但不能访问服务器A

我们没有可以同时访问两台服务器的系统,并且不太可能很快获得访问权限。

我们如何使存储库在不同位置之间保持同步?

到目前为止,我们一直在尝试以下方法,但收效甚微。

团队A:

  • git clone --mirror https://server_a.com/repository_origin.git以获得完整副本,包括原始存储库中的所有分支和标签

  • 将生成的文件夹包装为zip文件,然后转移到B组

团队B:

  • 提取邮政编码

  • cd repository_origin.git

  • git remote set-url --push origin https://server_b.com/repository_mirror.git

方法

    • git push --mirror导致团队B的更改被完全丢弃,但是团队A的所有更改都已合并到镜像存储库中,即团队B的更改不在镜像存储库中。
    • git fetch --all正确获取了团队B的所有本地更改
    • git push --mirror表示没有更改,即团队A的更改不在镜像存储库中。

显然,我们还需要从团队B到原始存储库进行更改,但是如果没有从A到B的工作按预期进行,那么尝试使B到A的工作似乎没有什么用处。

因此,我们尝试了这些方法,但均无济于事。有谁知道如何解决这个问题?当然,我们希望每个人都在同一个原始存储库上工作,但由于目前和可预见的将来尚无规定,我们会寻求解决方案。

1 个答案:

答案 0 :(得分:1)

Git旨在支持通过电子邮件进行的全功能协作。 Pro Git书中有chapter discussing this,但是基本上您可以使用git format-patch生成更改,使用git imap-send发送更改,然后使用git am将更改应用到另一端。同一本书的另一章包含short example

这可能感觉技术含量低,但这是一种成熟的工作流程,对于development of Git itself来说效果很好。

如果您的团队现在可以直接克隆存储库的初始副本,则可以generate a bundle with git bundle and then clone from that

如果您不喜欢电子邮件流,也可以use git bundle to update isolated systems。一般来说,git bundle可能比手动压缩克隆更好。