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

The*_*eLQ 1 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
Run Code Online (Sandbox Code Playgroud)

毫不奇怪,default当我真的需要它们在分支中时,hgsubversion会将提交提交到blizzard分支中.从文档中,无法重命名提交来自的分支.

令人沮丧的是,我甚至无法在回购中找到一种方法,只需要将hgsubversion repo拉出来,没有别的.无论如何,所有提交都与该分支相关联.

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

jke*_*ian 5

你有几个选择.

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

在这种情况下,是否可以切换您的命名方案?使用default的"进口从SVN"案和使用local或用于当地的变化相似的地方?然后,您可以使用不同的分支名称在代码库上命名独立项目.我过去使用过类似的机制.

编辑:刚刚在hgsubversion文档中发现了这一点:

hgsubversion.branch

将转换后的变更集标记为属于此分支,或者,如果未指定,则 default.请注意,标准布局克隆不支持此选项.

"标准布局克隆"几乎肯定意味着以正常的svn方式克隆整个项目,包括/ tags,/ branches和/ trunk.

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

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

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

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