This sounds kind of complex, so let me explain:
Project_A has lived for some time within its own Mercurial repository. Project_A is now getting folded into a new super project, Super-Project_B. Super-Project_B also has a mercurial repository. We would prefer if Project_A were not a subrepo, but instead just a normal child, but we also don’t want to lose the history. Is there a way to do this?
Yeah. Use the convert extension to move projectA down one directory level:
where your
filemap.txthas this line in it:(that dot might be a slash but I don’t think so).
That will give you a new repo, projectA-redone, that has all the history of A though all the changesets will have different hashes since their content (paths) have changed to get “projectA” in front of all of them.
Then you go into Super-Project_B and do a
hg pull -f /path/to/projectA-redone. You need the-fbecause otherwise you’ll be told that the repos are unrelated since they have no changesets in common.Finally you’ll do a
hg mergein Super_project_b which should have no conflicts (unless you already had a projectA directory, in which case you should’ve picked a different name orhg removed it first).After doing that B will have all of A inside the projectA subdirectory and all history will be intact.