At work, we are using ASP.net 2.0 and VSS. VSS is a beast, we are continually having issues with people checking out files and there is no branching - makes it crazy. I know SVN/GIT is mainly used by open source developers, are there any downsides to ASP.NET developers using it? I have been pushing for SVN internally, but am thinking GIT might also be a great option. Our team is spread across 3 continents.
We are using SVN for a couple of ASP.NET projects, and it is working fine.
We have initially been working with AnkhSVN as the VS plugin, and it basically worked well for me, but company-wide it has caused some problems. We have now switched to use VisualSVN which seems to be more reliable.
I've used Subversion in a corporate setting before with great success. I haven't personally used Git in a corporate environment, but with distributed offices it sounds like a good fit.
Expect a big "hump" while everyone gets up to speed, but moving off VSS is definitely a good idea. We never looked back when we moved from VSS to SVN. I would encourage you not to skimp on training up on the new system. Get a few smart folk to read the documentation for whichever system you pick - and read it thoroughly. Then work out how you're going to use that, and communicate that appropriately. Suggest which bits of the documentation everyone else really needs to use, and give them enough time to read it. Source control shouldn't be done on a "press return and hope" basis :)
I'm on SVN as well. I use Tortoise, but there are VStud add-ins as well.
I think TFS is the way to go. Tortoise svn isn't good enough, and i don't think there even exists a decent visual studio add-in for Git. I haven't tried the commercial svn vs-add-ins they might be worth looking into. But the integration and every other feature in TFS makes it excellent with visual studio.
Git is the best version control tool I've ever used, and many that I've used have been better than VSS. So yes, I'd say switch, and switch to Git.
My recommendations are:
1) Use Git, it makes really easy to create and merge branches
2) If you can't use Git, Use Anything But SourceSafe
SVN, no question about it.
- More widely used than other modern source controls. So likely your new hires will know it.
- Stable.
- Full of great features over CVS. (atomic checkin, global revision #s, external projects)
- Great UI (TortoiseSVN)
VSS is horrible. It is at best a functional "revision control system", but there is nothing concurrent about it.
I have used both SVN and GIT. Both are far superior to VSS. If you are currently using VSS, SVN will require getting to intimately know your software. GIT will require even more understanding.
SVN can be operated by a few proficient users and non-proficient users just learn to update and commit. GIT will require everyone to understand branching, merging, shelving, and more.
We're a 100% MS development house (C#, ASP.Net, SQL Server, IIS, Visual Studio, Office, etc), and we wouldn't touch VSS with a 20 foot pole. SVN is great. Get the free Ankh add-in as well.
We've been using Git for ASP.NET development, thanks to Git Extensions, and have only two issues - the learning curve with Git, and handling complex dependencies between projects. Otherwise, it's been an absolute pleasure. Git Extensions provides the Git CLI utility, a Windows GUI, and Visual Studio integration, and we use all three interchangeably.
A lot of the complexity of Git comes from the fact that it is amazingly flexible, and the graphical interfaces can't really mask that. IMO, even though you don't need a repository admin you will need at least one person on the team who is interested enough to learn the concepts of Git, so that they can help others with more advanced features or when cryptic messages appear.
Our dependency management issues really arise from .NET, rather than Git. Our applications share a set of common custom assemblies which are interdependent on each other, and we are currently using nested submodules. Git works correctly, but it requires an effort to keep the pieces in sync. If we were larger I would definitely implement a build system here.
If you have a large team or code base then you need to think about the issue of integration so that you can smoothly pull things together. The way that Git enables you to create and link together repositories at will is incredibly useful, as is the wonderful branching and merging, but these features make it even more important to be systematic about your code management and build process.
We used Subversion with TortoiseSVN and AnkhSVN previously, and I would not recommend it. I used Subversion happily on *NIX, but it was grief with Visual Studio. Renaming items in VS screwed things up fairly frequently, and each time it was time consuming to fix. In addition, Git just does everything faster and better.