使用新的默认分支名称将svn存储库拉/克隆到hg?

时间:2011-01-15 04:55:16

标签: mercurial hgsubversion

我正在申请一个项目的SVN回购,需要整合到我的Mercurial回购中。为了简单起见,我有一个本地hgsubversion repo和一个本地hg repo。但是,mercurial和hgsubversion repo都使用default作为默认分支名称。我的目标是将原始代码和更新放在一个分支上,将我的代码放在default分支

但是我还没有能够做到这一点。

W:\programming\tcsite-svn-test>hg clone http://*HG_SITE*/hg .
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

W:\programming\tcsite-svn-test>hg branch blizzard
marked working directory as branch blizzard

W:\programming\tcsite-svn-test>hg commit

W:\programming\tcsite-svn-test>hg log
changeset:   0:be13a9580df0
branch:      blizzard
tag:         tip
user:        Leon Blakey <lord.quackstar@gmail.com>
date:        Fri Jan 14 23:44:25 2011 -0500
summary:     Created Blizzard Branch

W:\programming\tcsite-svn-test>hg pull http://*SVN_SITE*/svn/
pulling from http://*SVN_SITE*/svn/
....
pulled 23 revisions
(run 'hg update' to get a working copy)

W:\programming\tcsite-svn-test>hg branch
blizzard

W:\programming\tcsite-svn-test>hg branches
default                       23:93642a8890ab <------
blizzard                       0:be13a9580df0

毫不奇怪,当我真正需要default分支时,hgsubversion会将提交放入blizzard分支。从文档中,没有办法重命名提交来自的分支。

令人沮丧的是,我甚至无法想出一个方法来回购,只有hgsubversion repo被拉出来,没有别的。无论如何,所有提交都与该分支相关联。

是否有关于如何从SVN仓库中提取更改并将分支重命名为其他内容的建议?

1 个答案:

答案 0 :(得分:5)

你有几个选择。

首先,内置扩展“转换”对于单向转换更加灵活,并且可以使用--branchmap选项轻松处理此问题。但是,hgsubversion为同步回svn提供了很好的功能,如果你使用hg convert则不会提供这些功能。

在这种情况下,是否可以切换您的命名方案?使用default作为'从svn导入'的情况并使用local或类似的内容进行本地更改?然后,您可以使用不同的分支名称在代码库上命名独立项目。我过去曾使用过类似的机制。

编辑:刚刚在hgsubversion documentation中找到了这个:

  

hgsubversion.branch

     

将已转换的变更集标记为所属   到这个分支,或者,如果没有说明,   default。请注意这一点   标准不支持选项   布局克隆。

“标准布局克隆”几乎肯定意味着克隆整个项目,包括/ tags,/ branches&amp; / trunk以正常的svn方式。

如果我理解正确,你应该可以做类似

的事情

hg --config hgsubversion.branch=blizzard clone <svn-repo/trunk>

不确定每次从svn更新时是否必须添加--config行,但是一些实验应该确认它。

如果由于某种原因不起作用,hgsubversion.branchmap功能也可用,