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

可能重复:
Mercurial:将一个文件及其历史记录复制到另一个存储库

我在本地机器上有几个存储库。 一个是我的主要代码,另一个是各种有用的代码/工具。 这是两个根本不同的回购。 建立一个新的回购协议并将其作为次回购协议可能是有意义的,但是我希望等到Mercurial开始将sub-repos标记为非实验之后再执行此操作。

其中一个有用的代码文件已经变得非常有用,我想把它放到我的主代码区域......但我想保持它的历史。 这当然会导致一些分支的变体,但这是可以接受的。 (最好的情况是能够来回推拉它并不断更新它的历史记录)。


我只是使用1.3版中的online子功能。 它可能会稍微变化,但不会太高,并且干燥后向兼容性明智。

如果你不能如此,那么你需要做的是:

  • 使用hg convert和一个filemap,删除除了你想要的文件之外的所有文件,并从单个有用文件的repo转换为仅包含该文件及其所有历史记录的新repo
  • 然后hg pull从新的单一文件全历史仓库中回收到目标仓库
  • hg merge到目标回购中,并且您将拥有该文件及其所有历史记录
  • 另一个选择是将hg export整个工具repo,使用grepdiffgrepdiff一部分)限制为只有一个文件,然后导入到目标repo中,但这太疯狂了。


    简短的回答是,您无法简单地复制文件及其历史记录,如本主题中所述:

    https://www.mercurial-scm.org/pipermail/mercurial/2009-April/025105.html

    我对DVCS比较陌生,你真的必须将每个回购视为一个独立包装。 不像svn或p4,您可以在根目录下挂载不同的项目,并配置它的喜欢方式并执行部分回购签出。 (也就是说,我非常喜欢能够快速克隆回购的灵活性,并能够在本地机器上进行提交。)

    我只是在看类似的问题。 我已经分支回购进行更改,我只想从一个变更集中取出一个文件。 有历史感觉真好。

  • 你可以看看:

    hg cat
    

    这可能会涉及编写一个脚本来传输历史记录,即在目标回购库中提交N个变更集与来自源代码的hg cat结果。 不知道是否有扩展来做到这一点?

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


  • 也许

    hg export
    

    也可以帮助你。

    链接地址: http://www.djcxy.com/p/37627.html

    上一篇: Fetching a single file from another mercurial repository

    下一篇: How to combine two projects in Mercurial?