我们在SVN存储库中维护了更大的代码库。 对于发行版,我们只想将发布标记/分支推送到Mercurial存储库,不包括主干中的历史记录。
我对DVCS没什么经验,所以也许我在尝试的方面走错了路。如果你能指出缺陷或指出替代方案,我会非常高兴。
这是我到目前为止所尝试的内容:
hg convert extension :使用hg convert <base project URL w/o "trunk">
转换完整的存储库,该存储库应根据the convert extension documentation提取包含分支和标记的完整历史记录。但hg tags
仅返回提示和默认,hg branches
仅默认。此外,它很慢(是的,我读到svnsync
),它包括完整的历史记录。我读到它可以用来逐步拉动,但我认为这对我不起作用。
hg转换扩展程序:转换标记并从另一个标记中提取工作w -f
但我真的不相信它。它是否正确处理删除?
hgsubversion :完整存储库中的hg clone
也会排除标记和分支
hgsubversion :hg clone
有效,但是无法从另一个标签中拉出( abort:无法在存储库中的其他路径上工作)
提前感谢指针。 “Noob,请先阅读此内容,稍后再回来”也表示赞赏。
答案 0 :(得分:0)
回答我自己的问题:我找到了达到我需要的方法。
假设我有一个空的hg存储库,我想在其中提供我的基线,我添加了一个.hgignore
文件来过滤所有svn元数据:
syntax glob
.svn
然后我执行以下操作:
svn co <tag url> .
hg addremove
hg commit -m"pulled rev. <tag>"
hg tag <tag>
对于后续版本我做:
svn switch <tag url> .
hg addremove
,hg commit
&amp; hg tag
如上所述这使我有可能在我的hg存储库中的修订之间来回切换,并且我在基线之间有更改文件的历史记录,但在svn提交级别没有。
对此有何看法? 感谢。