Svn 从Mercurial转换为Subversion

Svn 从Mercurial转换为Subversion,svn,version-control,mercurial,migration,Svn,Version Control,Mercurial,Migration,由于在一些工具中缺乏Mercurial支持,以及管理上的压迫,有必要将几个Mercurial试用存储库转换为Subversion,以符合公司标准 对于如何在不丢失修订历史记录等的情况下实现这一点,有什么工具或建议吗?应该可以做您想要做的事情。mercurial附带的convert扩展可以使用mercurial作为src和subversion作为dest hg convert --dest-type svn hgreponame svnreponame 确保在.hgrc文件中启用它 如果你想偷偷

由于在一些工具中缺乏Mercurial支持,以及管理上的压迫,有必要将几个Mercurial试用存储库转换为Subversion,以符合公司标准


对于如何在不丢失修订历史记录等的情况下实现这一点,有什么工具或建议吗?

应该可以做您想要做的事情。

mercurial附带的convert扩展可以使用mercurial作为src和subversion作为dest

hg convert --dest-type svn hgreponame svnreponame
确保在.hgrc文件中启用它


如果你想偷偷地继续使用mercurial,那么它将允许你进行双向同步。

Ry4an上面的回答正好做到了这一点;对于任何有问题的人(如我),请提供更详细的说明:

  • 帮自己一个忙,不要在Windows上尝试这个。您必须安装一个非常特定的SVN版本,即使这样,某些事情也会失败,并显示各种错误消息。我的解决方案是引导一个干净的AWS实例,yum在其上获取最新版本的mercurial和svn,克隆HG repo,并在那里运行convert

  • 将其添加到.hgrc文件以启用
    convert
    扩展名:

    [extensions]
    hgext.convert=
    
  • 运行以下命令:

    hg convert --dest-type svn <hg_directory> <directory_for_svn_output>
    
    不要放弃!只需再次运行相同的命令,它将继续它停止的地方

    如果您继续遇到问题,请在命令行中添加
    --debug--traceback
    ,以获取有关出错原因的更多详细信息


  • 经过2次修改后,此操作失败,并且
    中止:svn退出,状态为256
    我没有使用svn dest工具,但最近在邮件列表中看到它发生了很大变化。确保您正在为最新的svn使用最新的mercurial(1.4.1)和最新的swig绑定。然后开始使用一些组合--debug--traceback,甚至可能是strace。可能有必要从一个完全线性的水银历史开始,这很容易通过“hg克隆-r tip”实现。我想我听说svn的repo格式不适合干净地存储mercurial merge修订版。更进一步的说明是,由于某些类型的文件系统缺陷(ntfs3g)导致了流产。继续尝试。我在windows上运行此程序时遇到问题。您是否在win64环境中管理了此功能?D:\work\horizon>hg convert--dest type svn src horizon svn--debug初始化svn存储库“horizon svn”运行:“svnadmin”“create”“D:\work\horizon\horizon svn”svnadmin--helpSorry@mikelong如果这是一次性的事情,你最好启动一个linux虚拟机并在那里进行转换。看起来下面的答案也是由nitwit得出的。呃,Windows与这些有什么关系?@BillyONeal太长了,所以我记不清了,但是在Windows下,我的转换失败了,因为一些语法问题(我想这是由于将命令行参数格式化为svn.exe时出现了一些问题)。在谷歌上搜索这些错误,你会发现你需要一个非常特定的SVN版本才能工作。经过一段时间的修补,我选择在AWS上进行,这是第一次,但在windows和linux上都无法实现。在linux上,错误消息是mike@mike-虚拟机~/repos$hg convert--dest type svn~/Horizon~/HorizonToSvn初始化svn工作副本“HorizonToSvn wc”扫描源。。。分类。。。转换。。。6655基线30357中止:svn退出,状态为32512mike@mike-virtual machine~/repos$这个命令在安装了TortoiseHg 4.6和TortoiseSVN 1.11.1 CLI工具的Windows上运行得很好。我对Windows使用TortoiseHg和TortoiseSVN也有很好的经验,这与PitaJ上面的评论一致。我唯一的抱怨是修订历史日志日期不是原始日期,而是设置为执行转换的时间。这或许可以改进。感谢FOSS社区提供了这一伟大的软件!对于下一个发现Mercurial奇怪并渴望颠覆的漫游者,您可能会发现此链接很有用:对于下一个发现Mercurial令人反感的漫游者,请不要使用上面的链接“重新教育”自己,除非您相信销售基于Mercurial工具的供应商有一个公正的意见。也许可以试着尊重VCS与DVCS工具的偏好和观点。许多人都尝试过这两种方法,或者被迫尝试过这两种方法,对于他们喜欢什么以及为什么喜欢,他们有着完全正确的意见。@ChrisFreeman:不幸的是,这似乎是阿尔斯特尼卡的做法。它已经失败了。Debian的软件包数据库中仍有以下文件:
    abort: svn exited with status 256