Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TFS 2012 version control vs Mercurial

Tags:

mercurial

I'm evaluating a version control system for our team (of 1 to 2 developers) and am wondering how TFS 2012 version control compares to Mercurial in terms of merging and branching. We don't have a large team and it might just be me and maybe another developer so we may not need robust branching/merging capabilities that a DVCS offers. I haven't been able to find much info on TFS 2012 version control in terms of its capabilities. Can anybody point me to a guide or highlight some features? Please note, that we only have access to standalone version of TFS 2012 on VS professional version.

Thanks

like image 441
Riz Avatar asked Oct 31 '12 15:10

Riz


1 Answers

Mercurial branching differs from TFS in one critical way. Whereas TFS stores your branches in a different part of the filespace, Mercurial stores them in the history itself. This massively reduces the friction involved in branching and merging. It means, for example that:

  • Branches are created implicitly, simply by updating to a revision other than the latest, then committing on top of that.
  • Branches are also closed implicitly, again, simply by merging.
  • Branches can be re-opened implicitly, the same way as you create them in the first place.
  • Mercurial lets you switch between branches in-place very easily. You don't need to set up separate workspace mappings, and you don't need to change from one directory to another.
  • Branches can be anonymous.
  • Whereas TFS has "baseless merges" (which basically means it has massive problems with branches that aren't in a direct parent/child relationship), there is no such thing in Mercurial. It is always possible to find a common origin between two revisions, no matter how far apart their respective branches have diverged.
  • The graphical view of your branches in TortoiseHg is integrated with your project history, making it much easier to understand how branching and merging actually works in the first place.

There are several advantages of branching and merging which apply even to small teams or solo developers. One such example is being able to fix bugs on your production system even when you have other features in development. Another example is exploratory or experimental development: if one approach doesn't work out, you can easily roll back to the start and try a second, different approach, while still keeping the original approach around in case you need to refer back to it.

like image 93
jammycakes Avatar answered Oct 31 '22 10:10

jammycakes