【问题标题】:Mercurial: copying ONE file and its history to another repositoryMercurial:将一个文件及其历史记录复制到另一个存储库
【发布时间】:2011-04-08 06:48:24
【问题描述】:

我想知道是否可以将一个文件及其历史从一个存储库复制到另一个存储库,而无需导入整个其他存储库。

【问题讨论】:

  • 作为替代方案,您可以提交文件的副本,其中包含指向存储库的指针和修订 ID。

标签: mercurial


【解决方案1】:

您可以使用ConvertExtension 仅将第一个存储库中的一个文件导出到新的临时存储库,然后使用hg pull -f 将新存储库导入目标存储库。

使用单行为 ConvertExtension 创建文件映射:

include path/to/file

然后使用:

hg convert path/to/original path/to/temporary --filemap filemap

创建临时存储库。接下来,在目标存储库中,执行:

hg pull -f path/to/temporary

拉入该文件及其历史记录。这将创建一个新的头,因此请使用hg merge 将其与目标存储库中的头合并。

【讨论】:

  • 我不明白:我做了很多尝试,几乎每次我都得到一个只有两次提交(但文件正确)的存储库。它只工作了一次,我对我所做的不同之处一无所知:|
  • ffs 我明白了:它不处理文件重命名!您还必须明确“包含”所有以前的文件名称(我不知道他是否会记得它们是重命名而不是新文件)
  • 嗨!我按照这个方法但是我不能推送结果,它说“在分支上推送创建新的远程头[一个关闭的旧分支]”我该怎么办?
【解决方案2】:

只是为了添加到 Niall C. 的答案中,您可以重命名要导入的文件以将它们也放置在正确的位置。

您必须先重命名文件,然后再包含它。您的文件映射将如下所示:

rename "original/path" "wished/path"
include "original/path"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多