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
trunktobranches/Features/[FeatureName]. - Checkout a new working copy from
branches/Features/[FeatureName]. - Start working on it.
- Occasionally commit, merge
trunkin, 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?