I’m getting ready for my first “bigger” .NET project (ASP.NET MVC 3/4) on which I’m going to lead another 2 programmers and right now I’m choosing the right version control system for the job (plus I’m gonna use it for my future development too).
My problem is that I did’t use any version control system before, so I would like it to have as fast learning curve and intuitive merging as possible.
So far I quickly looked at VisualSVN (I like the Visual Studio integration in it), but I’m reading everywhere how Git is awesome and dunno which one to choose (not limited to these two).. Maybe I’m ovethinking this but I like when everything goes smoothly:)
I’d like to hear some opinions from people who used multiple version control systems (preferably on VS projects) what do you think is the less complicated and effective version control system for such a use (one to 5 man projects)?
8
I won’t list the differences between the many source control systems out there. There are literally hundreds of articles online doing just that.
What I will do is give you my experience working with both Git and Mercurial on .NET projects.
Using Git:
- Pretty decent integration using some free tools. Installation is a bit of an exercise in wierd-ville, not difficult but strange. It doesn’t feel like a part of Windows and forces you to install cygwin and asks you questions that more likely than not are alien for Windows developers.
Using Mercurial:
-
Installing Mercurial on Windows is really simple and feels like a Windows application. Launch setup and click next next next.
-
You can use TortoiseHG to install Mercurial and TortoiseHg which is a great utility for working with Mercurial repositories.
-
There is a tool that integrates with Visual Studio called VisualHg. It gives some fantastic icons right beside each file letting you know that something has changed and is waiting to be committed. It’s really lightweight, I’ve used it on projects with hundreds of files.
-
You can save a remote repository (and why wouldn’t you!) on BitBucket for free. Your project sounds commercial, just save it as private – for free. (for up to five people)
-
Get up to speed on Mercurial using http://www.hginit.com – Give the website two hours of your time and you’ll have enough working knowledge of Mercurial to start working.
Both version control systems are pretty much the same, ultimately I’d go with Mercurial because it has:
- Private repository hosting with BitBucket for free.
- You’ll be able to grasp it easier as it’s a bit more straight forward.
You can also find a great table comparing the Big Kahunas of source control on Veracity’s official website:
http://veracity-scm.com/
5
We have been using both TFS and git with Visual Studio without any problems
If all you need is a version control system, I would go with git.
- It’s free
- It integrates nicely through a plugin
- It’s fast
- As a DVCS, it allows you to commit even when not connected to any central repository.
If you need a complete ALM solution, go with TFS.
- Integrates even better
- Also fast
- ALM allows you to track your work without the need for any other third party solution.
3
Git has a higher learning curve than SVN, but gives you way more features and is way faster (even small svn repositories can get excruciatingly slow for some features e.g. showing a graph log)
Mercurial is also a viable alternative, its simpler than git, but pretty much as powerful and fast. It also arguably fits better into a windows environment, though git nowadays is much better in this respect
While SVN is simpler I’d also say it takes a bit more discipline to use, i.e. it is simpler because it makes the user do some of the work for it (e.g. merges require more information from user usually, and tags rely on you not committing to as they are really the same as branches)
overall I’d pick Mercurial or Git, with a slight preference for mercurial if you already know python (mercurial can be extended with python hooks) or want a simpler interface. I wouldn’t pick svn for myself, and would only really consider it if you already have a large number of developers who are familiar with it.
Expanding on Doc Browns comment; I’d agree VS integration is not really necessary if you are happy with either command line or an explorer shell extension (tortoiseX) however all the major players have VS plugins (personally I tend to avoid these as I find doing everything through tortoise is good enough and I don’t like having to many plugins installed as VS can get a bit unstable)
3
I’ve been using SourceGear Vault for years and we are very happy with it. Setup and configuration is extremely simple and it just works. Integration with Visual Studio is perfect. Support is very good too.
If you are after the less complicated alternative, SourceGear Vault is definitely much simpler to set up and use than the average DVCS.