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

Chr*_*cks 6 svn migration mercurial

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

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

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

由于几个原因,但主要是因为合并已经变得越来越痛苦,我们正在考虑转向Mercurial.

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

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

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

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

Mar*_*ler 2

您确实应该在Mercurial 邮件列表上提出此类问题。这就是 Mercurial 开发人员常去的地方,随着时间的推移,出现了许多 Subversion 迁移问题。

话虽这么说,最近的一项更改可能会对您有所帮助——它声称可以让您

[...] 甚至修复管理最不善的存储库,并将它们转变为结构良好的 Mercurial 存储库。

我自己还没有尝试过,所以我无法评论它对您的具体情况有多有效。