2011-04-01 54 views
1

我们在SVN存储库中维护较大的代码库。 对于发行版,我们只想将发布标签/分支推送到Mercurial存储库中,不包括中继中的历史记录。具有部分历史的Mercurial工作流的单向增量SVN

我几乎没有DVCS的经验,所以也许我在错误的轨道上与我尝试过。如果你能指出缺陷或指向替代品,我会非常高兴。

这里是我试过到目前为止:

  • 汞柱转换扩展:翻新使用hg convert <base project URL w/o "trunk">应该拉完整的历史记录,包括根据the convert extension documentation分支和标签的完整的信息库。但hg tags只返回提示默认,hg branches只有默认。此外,它很慢(是的,我读了约svnsync),它包括完整的历史。我读到它可以用来逐步拉动,但我没有看到为我工作。

  • 汞柱转换扩展:转换标签,并从另一个标签拉动工程W/-f但我真的不相信它。它是否正确处理删除?

  • hgsubversionhg clone完整的资料库中不包括标签和分支以及

  • hgsubversion:在标签上的作品hg clone,但随后从另一个标签拉动是不可能的(中止:无法在存储库中的不同路径上工作

在此先感谢指针。 “Noob,先阅读并稍后回来”也很感激。

+0

也许是一个非现场问题,但你能解释一下为什么你想要实现这样的事情吗?这对我来说似乎很奇怪。 – gizmo 2011-04-01 09:03:46

+0

@gizmo是的,这很奇怪:我们在我们的网站上使用svn,现在不想为整个团队切换到hg。 (紧张的时间表,没有太多的时间进行再教育,分散的团队,通常的借口) 我们将代码交付给客户的持续集成环境,该环境使用hg作为VCS。我们不希望推送完整的历史记录,而只会将定义的发布基准推送到此存储库。 此环境只能通过我们有权访问的客户机器的VPN访问。所以这个过程是:在开发过程中与SVN一起工作,从VPN机器上的SVN获得释放并推入到hg中。 – wwerner 2011-04-01 09:21:13

回答

0

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

假设我们到了我要救我的底线空汞库,我想补充一个.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 addremovehg commit & hg tag如上

这让我有版本之间来回切换的可能性在我的hg仓库中,我有一个hist在基线之间更改文件,但不在svn提交级别。

对此的评论? 谢谢。