将复杂的SVN分支层次结构迁移到Mercurial

时间:2009-06-05 08:36:45

标签: svn mercurial migration

我们的团队一直在使用SVN管理体面大小的应用程序,随着时间的推移,已建立了相当复杂的分支和标签层次结构,这是遵循SVN存储库的基本标准布局,但更嵌套:

  |-trunk
  |-branches
  |  |-releases
  |  |   |-releaseA
  |  |   `-releaseB
  |  `-features
  |      |-featureX
  |      `-featureY
  |-tags
     |-releaseA
     |   |-beta
     |   `-RTP
     `-releaseB
         |-beta
         `-RTP     

(特征分支显然是临时分支,但我们必须考虑它们,因为在不久的将来不可能立即关闭所有分支)

由于多种原因,但主要是因为合并变得越来越痛苦,我们正在考虑转向Mercurial。

我们目前面临的主要问题是迁移现有代码库而不会丢失历史记录。我已经尝试了几种迁移工具(例如,yasvn2hghg convertsvn2hg),yasvn2hg是最有希望的,但它们似乎都没有能够处理嵌套的层次结构,但它们所有人都假设分支和标签分别组织在一个平面目录中。

命名分支克隆之间的选择作为旧SVN分支的转换目标在这种情况下不是限制因素,因为任何解决方案都将被理解。我们目前正在试验这两种选择以及它们如何适应我们当前的流程,但还没有决定。我显然对有关该问题的类似设置的建议或经验感兴趣。

那么,将嵌套的SVN分支层次结构转换为Mercurial的最佳方法是什么?

将一个分支一次转换为一个单独的存储库会非常烦人,我不确定这是否是正确的方法,这取决于工具如何处理历史合并并需要了解所有其他分支?

2 个答案:

答案 0 :(得分:2)

我读过的一篇优秀文章是。 http://ww2.samhart.com/node/50

答案 1 :(得分:2)

你应该在mercurial mailing list上提出这样的问题。这就是Mercurial开发人员所在的地方,并且随着时间的推移出现了许多Subversion迁移问题。

话虽这么说,recent change可能会帮助你 - 它声称会让你

  

[...]修复即使是最糟糕的管理不善的存储库,并将它们转换为结构良好的Mercurial存储库。

我自己没有尝试过,所以我无法评论你的具体情况会有多大效果。