将具有多个重命名的subversion存储库转换为mercurial存储库

时间:2013-03-14 14:57:14

标签: svn mercurial

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

方面取得了部分成功
hg convert svn://localhost/project project-hg

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

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

2 个答案:

答案 0 :(得分:0)

尝试使用hgsubversion进行转换。

答案 1 :(得分:0)

这是我用来将我的项目转换为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