Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有部分历史记录的单向增量SVN到Mercurial工作流_Svn_Mercurial_Hgsubversion - Fatal编程技术网

具有部分历史记录的单向增量SVN到Mercurial工作流

具有部分历史记录的单向增量SVN到Mercurial工作流,svn,mercurial,hgsubversion,Svn,Mercurial,Hgsubversion,我们在SVN存储库中维护了更大的代码库。 对于发布,我们只希望将发布标签/分支推送到Mercurial存储库中,不包括主干中的历史记录 我几乎没有DVCSs方面的经验,所以可能我尝试的方向不对。如果你能指出缺点或其他选择,我会非常高兴 以下是我迄今为止所做的尝试: hg-convert-extension:使用hg-convert转换了完整的存储库,该存储库应根据需要提取完整的历史记录,包括分支和标记。但是hg标记仅返回提示和默认值,hg分支仅返回默认值。此外,它的速度相当慢(是的,我读到了关

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

我几乎没有DVCSs方面的经验,所以可能我尝试的方向不对。如果你能指出缺点或其他选择,我会非常高兴

以下是我迄今为止所做的尝试:

  • hg-convert-extension:使用
    hg-convert
    转换了完整的存储库,该存储库应根据需要提取完整的历史记录,包括分支和标记。但是
    hg标记
    仅返回提示和默认值,
    hg分支
    仅返回默认值。此外,它的速度相当慢(是的,我读到了关于
    svnsync
    ),它包含了完整的历史记录。我读到它可以用于增量拉动,但我不认为这对我有用

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

  • hgsubversion
    hgClone
    完整存储库也不包括标记和分支

  • hgsubversion
    hg clone
    在标记上工作,但无法从另一个标记中提取(中止:无法在存储库中的其他路径上工作)


提前谢谢你的指点。“Noob,先读这篇文章,然后再回来”也很受欢迎。

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

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

syntax glob 
.svn
然后,我做以下工作:

  • svn公司。
  • hg addremove
  • hg提交-m“拉式修订版”
  • hg标签
  • 对于后续版本,我会:

  • svn开关。
  • hg addremove
    hg commit
    &
    hg tag
    如上所述
  • 这使我有可能在hg存储库中的修订之间来回切换,并且我有基线之间更改文件的历史记录,但不在svn提交级别

    对此有何看法?
    谢谢。

    也许是个场外问题,但你能再解释一下你为什么要实现这样的目标吗?对我来说这似乎很奇怪。@gizmo是的,这很奇怪:我们在我们的网站上使用svn,现在不想为整个团队切换到hg。(日程紧,再教育时间不多,团队分散,通常的借口)我们将代码交付给客户的持续集成环境,该环境使用hg作为VCS。我们不希望将完整的历史记录推送到该存储库,而只希望将定义的发布基线推送到该存储库。此环境只能通过VPN从我们可以访问的客户机器访问。因此,这个过程是:在开发过程中与SVN合作,对于发布,从VPN机器上的SVN拉入并推入hg。