从Mercurial转换为Subversion

Mat*_*ner 24 svn migration version-control mercurial

由于缺乏对几种工具的Mercurial支持以及管理压迫,因此有必要将多个试用Mercurial存储库转换为Subversion以符合公司标准.

是否有任何工具或建议如何在不丢失修订历史记录等的情况下实现这一目标?

Ry4*_*ase 28

随mercurial一起提供的convert扩展可以使用mercurial作为src,使用subversion作为dest.

hg convert --dest-type svn hgreponame svnreponame
Run Code Online (Sandbox Code Playgroud)

确保在.hgrc文件中启用它.

如果你想在狡猾的时候继续使用mercurial,那么hgsubversion将允许你进行双向同步.

  • 再进一步说明,由于某种文件系统的缺点(ntfs3g),正在进行堕胎.继续尝试. (4认同)

nit*_*wit 9

Ry4an上面的回答完全诀窍; 对于遇到麻烦的任何人(比如我)的一些更详细的说明:

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

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

    [extensions]
    hgext.convert=
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行此命令:

    hg convert --dest-type svn <hg_directory> <directory_for_svn_output>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 您可能会收到以下错误:

    abort: svn exited with status 256
    
    Run Code Online (Sandbox Code Playgroud)

    不要放弃!只需再次运行相同的命令,它将从中断处继续.

    如果继续遇到问题,请添加--debug --traceback到命令行以获取有关错误的更多详细信息.