Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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)?

share|improve this question

closed as not constructive by Matthieu, Walter, maple_shaft Sep 5 '12 at 14:44

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Make sure you pick one that integrates with Visual Studio. Other than that go with what you can afford. –  ChrisF Sep 5 '12 at 13:04
6  
IMHO, VS integration is nice to have, but also much overrated. Pick SVN if a centralized model suffers your need, and GIT if your team is willing to invest a little bit more learning effort, but wants to use the distributed features. Using MS Windows, I would suggest to use TortoiseSVN or TortoiseGIT. –  Doc Brown Sep 5 '12 at 13:15
4  
@DocBrown: I disagree with it being overrated. I love being able to see what files have been changed in the Solution Explorer at a glance. –  Serg Sep 5 '12 at 13:45
2  
I have to close this as Not Constructive because the Git cult always seems to turn these kinds of questions into a holy war. Also possible duplicates, programmers.stackexchange.com/questions/111633/… programmers.stackexchange.com/questions/58388/… programmers.stackexchange.com/questions/77475/… –  maple_shaft Sep 5 '12 at 14:49
2  
@maple_shaft: Wars have to have two sides, ya know. Bit unfair to blame that entirely on the "Git cult". –  pdr Sep 5 '12 at 14:53

4 Answers 4

up vote 8 down vote accepted

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:

  1. Private repository hosting with BitBucket for free.
  2. 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/

enter image description here

share|improve this answer
    
Interesting - thanks! Yes, Cygwin is a little different for Windows folks, but my personal view is that Windows without Cygwin is a waste of a good computer! Fossil looks really interesting. Dr. Richard Hip has turned out some really cool stuff. –  GlenPeterson Sep 5 '12 at 14:15
1  
You can create Git repos on BitBucket. And Git isn't quite so Windows-user-unfriendly as it used to be. –  pdr Sep 5 '12 at 14:28
1  
@pdr: It's improved, but is still quite alien compared to Mercurial. That's just a fact. –  Serg Sep 5 '12 at 14:29
2  
Well I'm not a typical Windows user, but the truth is that I don't much like Cygwin (my experience with it is few years old though). I'm going to try Mercurial, as the Windows/VS integration is important for my collegues.Thank you all guys for tips, very appreciated. –  madpaulie Sep 5 '12 at 14:45
    
@Serg: Is it a fact like "forces you to install cygwin"? MSysGit is a perfectly viable alternative to cygwin. And while you need to install MSysGit and Putty for Git Extensions, you don't actually need to understand them under-the-hood. You could just use the Windows/VS integration. –  pdr Sep 5 '12 at 14:50

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.
share|improve this answer
    
Can you expand on what ALM means? –  Serg Sep 5 '12 at 13:56
1  
@Serge - ALM stands for Application Lifecycle Management. Version control is only one aspect of TFS. The intent is to log the work items that need to get done. Attach each (code or other) change to a workitem when checking in. Starting a build for the solution when checking in (Nightly, Continuous Integration, Gated Checkin). Run testcases and gather the results. Have a quick overview on the health of your project... It provides a wealth off information but it's not free and it requires more management. –  Lieven Keersmaekers Sep 5 '12 at 14:00
3  
Worth noting that Microsoft have recently released a Git integration with TFS meaning you can have the best (or worst, depending on your perspective) of both worlds. blogs.msdn.com/b/bharry/archive/2012/08/13/… –  pdr Sep 5 '12 at 14:06

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)

share|improve this answer
    
out of interest just tried using tortoiseSVN show revision graph on my current mid-sized project - message box says 1 hour remaining –  jk. Sep 5 '12 at 13:54
    
I read about these SVN's (mostly speed) quirks, that's why I'm going to test Mercurial. Thanks for info;) –  madpaulie Sep 5 '12 at 14:50
    
Ok its just displayed the graph now –  jk. Sep 5 '12 at 15:12

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.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.