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?
What Is Mercurial? Mercurial is a free, distributed version control system. It's also referred to as a revision control system or Mercurial source control. It is used by software development teams to manage and track changes across projects.
Yeah. Use the convert extension to move projectA down one directory level:
hg convert --filemap filemap.txt projectA projectA-redone
where your filemap.txt
has this line in it:
rename . projectA
(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 -f
because otherwise you'll be told that the repos are unrelated since they have no changesets in common.
Finally you'll do a hg merge
in 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 or hg remove
d it first).
After doing that B will have all of A inside the projectA subdirectory and all history will be intact.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With