I am currently in the process of figuring out how best to approach moving from SVN to Mercurial.
I've done some research into recommended Mercurial repository structures - see Subversion Re-education, Recommended Mercurial repository/folder structure for an SVN user and (Yet another) What's the best conversion from an SVN repository to HG repository(ies)?.
I think I have the structure in place now, but I'd like some advice on how best to approach the actual conversion.
Just for reference, here's our current SVN structure:
Project-repository
Trunk
ProductA
Trunk
Branches
Tags
ProductB
Trunk
Branches
Tags
Branches
ClientA
ProductA
Trunk
Branches
Tags
ProductB
Trunk
Branches
Tags
ClientB
ProductA
Trunk
Branches
Tags
ProductB
Trunk
Branches
Tags
Tags
and here's the proposed Hg structure:
Stable-ProductA-repository
Stable-ProductB-repository
ClientA-ProductA-repository (branched from Stable-ProductA-repository)
ClientA-ProductB-repository (branched from Stable-ProductB-repository)
Now to convert our current SVN structure into Hg, I'm thinking about doing it the following way using the Convert extension
- Convert "Project-repository/Trunk/ProductA" to Stable-ProductA-repository
- Convert "Project-repository/Trunk/ProductB" to Stable-ProductB-repository
- Convert "Project-repository/Branches/ClientA/ProductA" to ClientA-ProductA-repository
- Convert "Project-repository/Branches/ClientA/ProductB" to ClientA-ProductB-repository
- Etc. for ClientB
From what I've read, this seems like the proper way to structure your Mercurial repository and do the conversion from SVN to Mercurial, but I'm a bit unsure if I'm missing something. Specifically I'm unsure if changes made to e.g. the ClientA-ProductA-repository can be pulled from the Stable-ProductA-repository. We spend most of the time developing in client repositories, so we need to be able to merge changes back into the stable repository.
I'm aware that Mercurial supports subrepositories, but I'd like to move away from the nested repository structure and have clean cut so to speak.
So just to be clear on what I'm asking: Will it be possible to pull/push between repositories after the conversion from one SVN repository to multiple Hg repositories, and is my proposal for the new Hg structure sound?