"最佳" svn to hg转换工具用于我的特定目的

时间:2015-08-16 19:30:58

标签: svn version-control

当谈到从svn转换为hg时,似乎有一百万页专门用于它(在stackoverflow和web中一般),但它们似乎都有关于哪些工具可用的清单,也许建议(尽管它们各不相同,并且通常不会真正说出推荐的原因),但没有关于使工具最符合我要求的因素的真实信息。同样糟糕的是,大部分信息都来自2010年左右,有时候会有笔记或其他页面说“这个工具已经过时和/或维护得不好”#34;随着hg的迅速发展,2010年可能也是石器时代。

我想将svn转换为hg,主要是为了简化一些严重的合并。我很乐意将整个团队转换为hg,但由于种种原因尚未发生。因此,我可能会在某个时间使用hg,而团队的其他成员继续使用svn。因此,能够往返,即将svn repo转换为hg,对hg进行处理,然后将更改推回到svn对我来说很重要。能够将hg存储库与svn repo同步也很重要,因为将对svn repo进行持续的更改。虽然本地hg repo可以满足我的大多数目的,但我也希望在服务器上保留一个中央hgo repo,这样我就可以说服其他人尝试它。

据我所知,DVCS与hg和git相似的主要原因并不是它们的分发,而是它们以一种更有利于合并的形式保存历史。如果我将svn repo转换为hg将hg以其首选形式获得足够的历史记录,以便它能够做更好的合并吗?我什么时候同步?

我不关心转换工具运行的操作系统,因为我们将Windows 7用于服务器上的笔记本电脑和Linux(我有超级用户访问权限)。如果有什么我可能更喜欢Linux,那就是svn repo所在的位置以及中央hg repo所在的位置。我也不关心初始转换需要多长时间(虽然同步是另一回事),因为我可以在周五开始转换并在星期一进入(我们的svn回购并不是那么大)。

有人可以给我一些关于哪些svn到hg工具可以满足我的特定要求的建议吗?

1 个答案:

答案 0 :(得分:0)

Pure Mercurial(Win-box上的TortoiseHG)+ HGSubversion

  • 只需将SVN-repo克隆到本地Mercurial repo
  • 即可
  • 工作,承诺给Hg
  • hg pullsvn up
  • 相同
  • hg push将发布对SVN-repo的更改

一些注释(部分来自hg help svn的哑引用):

  • 从Subversion转换时,hgsubversion无法识别合并 信息,并不会基于它创建合并。
  • Mercurial合并无法推送到Subversion。 你必须在SVN HEAD
  • 之上修改你的工作
  • 也不能推动多头分支(SVN历史是线性的,与Hg&#DAG相反)
  • 无法与多个Subversion存储库进行交互 每个Mercurial克隆。

一些注释和观察,不适合评论

  • SVN不会隐藏Mercurial的mergeinfo,Mercurial是当前的主线-HGSubversion,它忽略了这些数据。但即使是不正确的公共父级(在SVN合并之后进行HG合并的情况下)也不会阻止对已更改块的整洁定义(至少从内存中,"循环交叉分支合并" - A-> B - > C-> D-> A - 在HG中不是问题,与SVN相反)
  • 在具有分支每任务工作流的真实SVN项目中,我并行使用SVN-WC和HG-WorkDir(克隆SVN-repo到本地Mercurial,但主要是在合并/源之后转移到WC以提交回购)。我更喜欢在不同的地方分离Hg和SVN,但理论上,它可以是常见的(WD + WC)目录,相互忽略外来元数据