我正在尝试将subversion (svn)存储库转换为mercurial (hg)。在过去,svn存储库项目文件夹被重命名了好几次。以下命令可以部分成功地将svn项目转换为hg:
hg convert svn://localhost/project project-hg
这将从最新版本转换回svn项目文件夹最后一次重命名的版本。此时,转换后的hg存储库(变更集0)仅包含存储库中所有文件的添加操作(文件内容与进行svn重命名时相同)。
我想在hg项目中保留原始svn项目的历史,一直追溯到版本0,但我不确定如何克服重命名问题。
尝试使用hgsubversion进行转换。
这是我刚刚用来将我的项目以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