I'm a Subversion user, and I think I've got my head mostly around it all now. So of course now we're thinking of switching to Mercurial, and I need to start again.
In our single repository, we have the typical branches
, tags
, trunk
layout. When I want to create a feature branch I:
- Use the repo browser to copy
trunk
tobranches/Features/[FeatureName]
. - Checkout a new working copy from
branches/Features/[FeatureName]
. - Start working on it.
- Occasionally commit, merge
trunk
in, resolve conflicts and commit. - When complete, one more merge of
trunk
, then "Reintegrate" the feature branch into trunk.
(Please note this process is simplified as it doesn't take into account release candidate branches etc).
So I have questions about how I'd fulfil the same requirements (i.e. feature branches rather than working on trunk) in Mercurial:
- In Mercurial, is a branch still within the repository, or is it a whole new local repository?
- If we each have a copy of the whole repository, does that mean we all have copies of each other's various feature branches (that's a lot of data transfer)?
- I know Mercurial is a DCVS, but does that mean we push/pull changes from each other directly, rather than via a peer repository on a server?