1

我们在 SVN 存储库中维护更大的代码库。对于发布,我们只想将发布标签/分支推送到 Mercurial 存储库中,不包括主干中的历史记录。

我对 DVCS 的经验很少,所以我尝试的方法可能是错误的。如果您能指出缺陷或指出替代方案,我将非常高兴。

这是我到目前为止所尝试的:

  • hg convert extension:转换了完整的存储库,使用hg convert <base project URL w/o "trunk">它应该根据转换扩展文档提取完整的历史记录,包括分支和标签。但hg tags只返回tipdefaulthg branches只返回default。此外,它很慢(是的,我读到过svnsync)并且它包含完整的历史记录。我读到它可以用来逐步拉动,但我认为这对我不起作用。

  • hg convert extension:转换标签并从另一个标签中提取可以工作,-f但我并不真正相信它。它是否正确处理删除?

  • hgsubversionhg clone完整存储库的不包括标签和分支

  • hgsubversionhg clone在一个标签上工作,但是从另一个标签中提取是不可能的(中止:无法在存储库中的不同路径上工作

提前感谢您的指点。“Noob,先去读这个,然后再回来”也很受欢迎。

4

1 回答 1

0

回答我自己的问题:我找到了实现我需要的方法。

假设我们有一个空的 hg 存储库,我想向其中传递我的基线,我添加一个.hgignore过滤所有 svn 元数据的文件:

syntax glob 
.svn

然后我执行以下操作:

  1. svn co <tag url> .
  2. hg addremove
  3. hg commit -m"pulled rev. <tag>"
  4. hg tag <tag>

对于后续版本,我会:

  1. svn switch <tag url> .
  2. hg addremove, hg commit&hg tag如上

这使我可以在我的 hg 存储库中的修订之间来回切换,并且我有基线之间更改文件的历史记录,但不是 svn 提交级别。

对此有何看法?谢谢。

于 2011-04-01T15:23:18.623 回答