【问题标题】:Convert subversion repository with multiple renames to mercurial repository将具有多个重命名的 subversion 存储库转换为 mercurial 存储库
【发布时间】:2013-09-08 22:04:41
【问题描述】:

我正在尝试将 subversion (svn) 存储库转换为 mercurial (hg)。过去 svn 存储库项目文件夹曾多次重命名。以下命令部分成功地将svn项目转换为hg:

hg convert svn://localhost/project project-hg

这会将最新版本转换回 svn 项目文件夹最后重命名的版本。此时转换后的 hg 存储库(变更集 0)仅包含对存储库中所有文件的添加操作(文件内容与 svn 重命名发生时相同)。

我想在 hg 项目中保留原始 svn 项目的历史,一直到修订版 0,但我不确定如何克服重命名问题。

【问题讨论】:

    标签: svn mercurial


    【解决方案1】:

    使用hgsubversion 尝试转换。

    【讨论】:

      【解决方案2】:

      这是我刚刚用于将我的项目转换为 1 重命名为 mercurial 的脚本。您必须在一个空目录中运行它,就像每次迭代一样 rm -rfv *:

      #!/bin/bash
      set -e
      svnpath=svn://host/repo/project
      hg init
      for r in $(svn log $svnpath | egrep -o '^r[0-9]+' | tac); do
        rm -rfv *
        svn export --force -r $r $svnpath .
        hg addremove -s 50
        message="$(svn log -c $r $svnpath | tail -n +4 | head -n -1)"
        echo "$message" >&2
        changes="$(hg st)"
        [[ "$changes" ]] && hg commit -m "$message"
      done
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多