0

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

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

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

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

4

2 回答 2

0

尝试使用hgsubversion进行转换。

于 2013-03-18T11:18:15.237 回答
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
于 2013-09-08T13:59:30.837 回答