我正在申请一个项目的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仓库中提取更改并将分支重命名为其他内容的建议?
答案 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功能也可用,