将SVN repo的子文件夹拆分为单个Mercurial存储库会导致错误“中止:预期的主干位于'trunk / module1',但未找到”

时间:2012-01-05 01:29:11

标签: mercurial

我有一个SVN repo,其结构如下:

/分支
/标签
/后备箱
/中继/模块1
/中继/模块2
/ trunk / module3

我正在尝试将其分成单独的Mercurial回购,其中每个新的Mercurial回购保留该模块文件的修订历史记录。最终结果将是

/模块1-HG
/模块2-HG
/单词数-HG

根据本指南(http://wiki.colar.net/selectively_converting_subversion_repository_to_mercurial),
我尝试过使用

hg --config convert.svn.trunk=trunk/module1 convert https://repo.url/ module1-hg

但是会导致以下错误:

abort: expected trunk to be at 'trunk/module1', but not found

我能够转换整个SVN存储库,但我真的想在此时分离模块。我觉得我只是找不到一个很好的语法例子来分开这些。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

我最近这样做但是我分几步完成了。

首先,我将整个回购转换为SVN回购的镜像。我使用了hgsubversion扩展程序,但是如果您使用convert扩展程序,那就没关系了。

第二步是拆分回存的地方。我使用convert扩展名和文件图来排除某些文件夹并重命名其他文件夹。

例如:

hg convert bigrepo module1-hg --filemap module1.txt

module1.txt将包含以下内容:

exclude module2
exclude module3
rename module1 .

这将创建一个名为module1-hg的repo,不包括模块2和3.它还会将module1的源移动到repo的根目录而不是子目录。

然后,您可以使用类似的文件映射文件重复模块2和3的操作。