使用git和git-svn进行分散式开发

时间:2011-01-10 09:35:30

标签: git git-svn subgit

我们有2-3个2-3人的小团队。我们都使用git for local和svn for central repository和git-svn得到同步。除非我们想在团队之间共享我们的代码,否则它始终有效。

所以我们尝试了git pull,这会产生很多冲突,并且它不会检测到我们在同一棵树上。它获取所有更改(与克隆相同然后拉) 当然我不想克隆完整的回购。每次我想分享。

请建议更好的流程。

  1. 我们无法摆脱中央svn。
  2. 我们不能每次都克隆。

3 个答案:

答案 0 :(得分:3)

指定一名团队成员作为“git hub”,他/她与SVN服务器同步,其他团队成员与他们互动,而不是直接与SVN服务器互动。这样git就会知道所有团队成员都在同一棵树上。

答案 1 :(得分:3)

SubGit似乎是一个很好的选择。

SubGit 是服务器端解决方案,它允许Git访问Subversion存储库,反之亦然。这意味着您只能使用您选择的Git客户端使用Git存储库。

您需要将SubGit安装到Subversion存储库中一次。之后,SubGit立即将svn修订版转换为每个svn commit的git commit,并将git commit转换为每个git push的svn修订版。

SubGit是封闭源代码软件,但它对于开源项目是免费的。有关详细信息,请参阅SubGit documenation

答案 2 :(得分:2)

要添加Chris Huang-Leaver的答案,您需要一个中心点来使用svn repo进行dcommit / rebase。
这并不否认Git的“分散”方面,它只是允许每个人作为他们的远程存储库之一,使用一个“中央”引用回购(即与svn同步)

没有简单的方法可以避免克隆来自(可能是巨大的)svn回购的所有的负担,因为生成的Git repo cannot be split into submodules。 这留下了至少一个“解决方案”,其中包括:

  • 在主要的Git旁边创建不同的Git(与SVN同步)
  • 从主仓库导出补丁
  • 将这些补丁应用于代表主Git仓库中项目的每个Git仓库。

显然需要自动化,但是一个团队将把重点放在那些git repos的一个作为其“中央”回购,而SVN同步的负责人会更新那些较小的Git回购来自主要(和隐藏)Git< => SVN回购的补丁。