具有部分历史记录的Mercurial Workflow增量SVN的一种方法

时间:2011-04-01 08:29:46

标签: svn mercurial hgsubversion

我们在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,请先阅读此内容,稍后再回来”也表示赞赏。

1 个答案:

答案 0 :(得分: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>
  5. 对于后续版本我做:

    1. svn switch <tag url> .
    2. hg addremovehg commit&amp; hg tag如上所述
    3. 这使我有可能在我的hg存储库中的修订之间来回切换,并且我在基线之间有更改文件的历史记录,但在svn提交级别没有。

      对此有何看法? 感谢。