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

Mercurial:将一个文件及其历史记录复制到另一个存储库,mercurial,Mercurial,我想知道是否可以将一个文件及其历史记录从一个存储库复制到另一个存储库,而不必导入整个其他存储库。您可以使用将第一个存储库中的一个文件导出到新的临时存储库,然后使用hg pull-f将新存储库导入目标存储库 使用单行为ConvertExtension创建文件映射: include path/to/file 然后使用: hg convert path/to/original path/to/temporary --filemap filemap 创建临时存储库。接下来,在目标存储库中,执行以下操

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

您可以使用将第一个存储库中的一个文件导出到新的临时存储库,然后使用
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
将其与目标存储库中的头合并。

只需添加到Niall C.的答案中,您也可以重命名要导入的文件以将其放置在正确的位置

必须首先重命名该文件,然后将其包括在内。您的文件映射如下所示:

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

作为替代方案,您可以提交一份文件副本,其中包含指向存储库的指针和修订id。我不明白:我做了很多尝试,几乎每次我提交一个存储库时只需两次提交(但使用正确的文件)。它只工作了一次,我一点也不知道我做了什么不同:|我明白了:它不处理文件重命名!你必须明确地“包括”所有以前的文件名(我不知道他是否会记得它们是重命名的而不是新文件)嗨!我遵循这个方法,但我不能推送结果,它说“推送在分支上创建新的远程头[一个关闭的旧分支]”,我能做什么?