Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
从另一个mercurial存储库获取单个文件_Mercurial - Fatal编程技术网

从另一个mercurial存储库获取单个文件

从另一个mercurial存储库获取单个文件,mercurial,Mercurial,可能重复: 我在本地机器中有几个存储库。 一个是我的主代码,另一个是各种有用的代码/工具。 这是两种根本不同的回购协议。建立一个新的回购协议并将这两个协议作为子回购协议引入可能是有意义的,但我想等到Mercurial开发人员将子回购协议标记为非实验性之后再这样做 其中一个有用的代码文件变得非常有用,我想把它放在我的主代码区…但我想维护它的历史记录。当然,这会产生一些叉子的变体,但这是可以接受的。(最好的情况是能够前后推拉它,并不断更新它的历史记录) 我只想使用1.3版本中上线的subrepo功

可能重复:

我在本地机器中有几个存储库。 一个是我的主代码,另一个是各种有用的代码/工具。 这是两种根本不同的回购协议。建立一个新的回购协议并将这两个协议作为子回购协议引入可能是有意义的,但我想等到Mercurial开发人员将子回购协议标记为非实验性之后再这样做


其中一个有用的代码文件变得非常有用,我想把它放在我的主代码区…但我想维护它的历史记录。当然,这会产生一些叉子的变体,但这是可以接受的。(最好的情况是能够前后推拉它,并不断更新它的历史记录)

我只想使用1.3版本中上线的subrepo功能。它可能会有轻微的变化,但你不会因为向后兼容而变得孤立无援

如果你不能做到这一点,那么你需要做的是:

  • hg convert
    与文件映射一起使用,该文件映射删除除所需文件之外的所有文件,并将包含单个有用文件的repo转换为仅包含该文件及其所有历史记录的新repo
  • 然后,
    hg将
    从新的单文件完整历史回购拉入目标回购
  • hg merge
    在目标回购协议中,您将拥有该文件及其所有历史记录
  • 另一个选项是
    hg导出整个工具repo,使用
    grepdiff
    (difftools的一部分)限制为仅一个文件,然后导入到目标repo,但这太疯狂了。

    可能是

    hg export
    

    也可以帮助您。

    简短的回答是,您不能简单地复制文件及其历史记录,如本文所述:

    我对DVCS比较陌生,你真的必须把每次回购都看作是一个独立的一揽子计划。与svn或p4不同,在svn或p4中,您可以将不同的项目挂起根目录,并按照自己的喜好进行配置,并执行部分回购签出。(也就是说,我真的很喜欢能够快速克隆回购协议以进行尝试的灵活性,以及能够在本地机器上提交的灵活性。)

    我只是在看一个类似的问题。我已经分支了一个repo来进行更改,我只需要一个更改集中的一个文件。很高兴有这样的历史

    • 你可以看看:

      hg cat
      
      这可能需要编写一个脚本来传输历史,即使用来自源的hg cat结果在目标repo中提交N个变更集。不知道是否有这样做的扩展

    • 您可以获取要复制的文件的日志,并将其粘贴到提交注释中。它不在元数据中,但您确实有一个记录和所有哈希值等


    您的问题是什么?您只想获取一个文件?是的。我想抓取1个文件及其修订历史记录。这里问的问题和回答的问题相同,问题和回答都更加清晰。步骤1.5:hg更新::-)我认为没有必要进行更新。您在目标回购协议中的工作目录将位于旧的提示,“hg merge”将正确地合并到新的另一个头中。“hg update”(可能)对于该过程的运行来说不是必需的,但是如果您想检查新创建的回购协议以确保其正确,那么不要忘了更新。我忘了,当新目录为空时,我真的很困惑。