Mercurial: copying ONE file and its history to another repository

You can use the ConvertExtension to export just that one file from the first repository into a new temporary repository, then use hg pull -f to import the new repository into the target repository.

Create a filemap for the ConvertExtension with the single line:

include path/to/file

Then use:

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

to create the temporary repository. Next, in the target repository, do:

hg pull -f path/to/temporary

to pull in that file with its history. This will create a new head, so use hg merge to merge it with the head in your target repository.


Just to add to Niall C.'s answer, you can rename the files you are importing to place them at the correct place too.

You must first rename the file, then include it. Your filemap would look like that:

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