SVN中维护分支的工具

时间:2010-03-29 05:18:15

标签: svn git version-control branch merge

我的团队使用SVN进行源代码管理。最近,我一直在一个分支机构,偶尔从主干合并,这是一个相当烦人的经历(参见Joel Spolsky的"Subversion Story #1"),所以我一直在寻找管理分支和合并的替代方法。鉴于集中式SVN存储库是不可协商的,我想要的是一组满足以下条件的工具。

  1. 完整的修订历史记录应存储在SVN中,用于中继和分支。

  2. 在任何一个方向(并且可能是纵横交错)的合并应该相对无痛。

  3. 合并历史记录应尽可能存储在SVN中。

  4. 我已经查看了git-svnbzr-svn,似乎都没有达到这个目的 - 基本上,鉴于他们可以从SVN存储库导出的修订历史,他们似乎无法做一个比SVN更好的工作处理合并。例如,在使用git克隆存储库之后,我的分支的修订历史记录显示了主干的原始分支,但git没有“看到”任何临时SVN合并为“本机”合并 - 修订历史是一条长线。因此,在git中从trunk进行合并的任何尝试都会产生与SVN合并一样多的冲突。 (此外,git-svn documentation明确警告不要使用git在分支之间进行合并。)

    有没有办法调整我的工作流程以使git满足上述要求?也许我只需要提示或技巧(或单独的合并工具?)来帮助SVN更好地融入分支机构?

1 个答案:

答案 0 :(得分:2)

如果没有纯粹的SVN答案,我想参考SO问题“How to fool git-svn to recognize merges made with svn?

我建议在特殊分支中进行这些git合并,但更简单的解决方案是在git-svn克隆仓库中使用git grafts file记录(至少最近的)SVN合并,以便变换:

  o-...-A---o---D--- unstable
 /       
X-----B---M---o---o--- stable

成:

  o-...-A---o---D--- unstable
 /       \ 
X-----B---M---o---o--- stable

,在dcommit之前缓和git merge过程并将其发送回SVN。