<p>I've been programming for 10+ years now for the same employer and only source code control we've ever used is VSS. (Sorry - That's what they had when I started). There's only ever been a few of us; two right now and we usually work alone, so VSS has worked ok for us. So, I have two questions: 1) Should we switch to something else like subversion, git, TFS, etc what exactly and why (please)? 2) Am I beyond all hope and destined to eternal damnation because VSS has corrupted me (as Jeff says) ?</p>

<p>Wow - thanks for all the great responses! </p>

<p>It sounds like I should clearify a few things. We are a MS shop (Gold parntner) and we mostly do VB, ASP.NET, SQL Server, sharepoint &amp; Biztalk work. I have CS degree so I've done x86 assembly C, C++ on DEC Unix and Slackware Linux in a "time out of mind" ...       </p>

<p>My concern with VSS is that now I'm working over a VPN a lot more and VSS's performance sux and I'm afraid that our 10+ y/o version 5 VSS database is going to get hoosed...
There's the LAN service that's supposed to speed things up, but Ive never used it and I'm not sure it helps with corruption - has anyone used the VSS LAN service? (new with VSS 2005) </p>

[{'answer_id': 31631, 'author': 'Ben Collins', 'author_id': 3279, 'author_profile': 'https://Stackoverflow.com/users/3279', 'pm_score': 6, 'selected': True, 'text': "<p>I'd probably go with Subversion, if I were you.  I'm a total Git fanatic at this point, but Subversion certainly has some advantages: </p>\n\n<ul>\n<li>simplicity</li>\n<li>abundance of interoperable tools</li>\n<li>active and supportive community</li>\n<li>portable</li>\n<li>Has really nice Windows shell integration</li>\n<li>integrates with visual studio (I think - but surely through a third party)</li>\n</ul>\n\n<p>Git has many, many other advantages, but the above tend to be the ones people care about when asking general questions like the above.</p>\n\n<p><strong>Edit</strong>: the company I now work for is using VisualSVN server, which is free.  It makes setting up a Subversion repository on a Windows server stupid simple, and on the client we're using TortoiseSVN (for shell integration) and AnkhSVN for Visual Studio support.  It's quite good, and should be fairly easy for even VSS users to pick up.</p>\n\n<p><strong>Latter-day Edit</strong>: So....nearly eight years later, I would never recommend Subversion to anyone for any reason.  I don't really recant, <em>per se</em>, because I think my advice was valid at the time.  However, in 2016, Subversion retains almost none of the advantages it used to have over Git.  The tooling for Git is superior to (and much more diverse) what it once was, and in particular, there's GitHub and other good Git hosting providers (BitBucket, Beanstalk, Visual Studio Online, just off the top of my head).  Visual Studio now has Git support out-of-the-box, and it's actually pretty good.  There are even PowerShell modules to give a more native Windows experience to denizens of the console.  Git is even easier to set up and use than Subversion and doesn't require a server component.  Git has become as ubiquitous as any single tool can be, and you really would only be cheating yourself to not use it (unless you just really want to use something not-Git).  Don't misunderstand - this isn't me hating on Subversion, but rather me recognizing that it's a tool from another time, rather like a straight razor for shaving.  </p>\n"}, {'answer_id': 31632, 'author': 'Chris Conway', 'author_id': 2849, 'author_profile': 'https://Stackoverflow.com/users/2849', 'pm_score': 1, 'selected': False, 'text': "<p>I'd say stick with what works for you. Unless you are having issues with VSS, why switch? Subversion is swell, though a little sticky to begin using it. TFS is far better than VSS, though it is fairly expensive for such a small team. I have not used git so I can't really speak to it.</p>\n"}, {'answer_id': 31636, 'author': 'OwenP', 'author_id': 2547, 'author_profile': 'https://Stackoverflow.com/users/2547', 'pm_score': 2, 'selected': False, 'text': "<p>I like using Subversion for my personal projects.  I could go down the list of features and pretend like it brings a lot to the table that other source control systems don't, but there's tons of good ones out there and the right choices is really a matter of style.  If you check in after each small change (i.e. one checkin per function change), then many people can work on the same source file with very low risk of merge conflicts in practically anything <i>but</i> VSS (I haven't used VSS in years but from what I remember only one person at a time can work on a file.)  If this isn't ever going to happen to you, I feel like the best course of action is to use what you know.  VSS is better than no source control at all, but it feels restrictive to me these days.</p>\n\n<p>I don't think you're beyond hope because you're asking if it would be better to switch; you're beyond hope when the answer is obvious and you ignore the evidence.</p>\n\n<p>Even if you don't change source control systems, you ought to pick one like SVN or git and spend a few weeks reading about it and making a small project using it; it always helps to sharpen the saw.</p>\n"}, {'answer_id': 31641, 'author': '17 of 26', 'author_id': 2284, 'author_profile': 'https://Stackoverflow.com/users/2284', 'pm_score': 3, 'selected': False, 'text': "<p>Whatever you do, don't change for the sake of changing.</p>\n\n<p>If it's working for you and you're not having problems with it, I don't see any reason to switch.</p>\n"}, {'answer_id': 31651, 'author': 'lomaxx', 'author_id': 493, 'author_profile': 'https://Stackoverflow.com/users/493', 'pm_score': 3, 'selected': False, 'text': '<p>If you\'re used to the way VSS works, check out (no pun intended) <a href="http://www.sourcegear.com/vault/" rel="nofollow noreferrer">Sourcegear\'s vault</a>. It\'s an excellent way to migrate away from VSS as it comes with IDE integration and supports check out / check in, but when you\'re ready and feel comfortable you can also move to the edit update commit style of programming found in SVN.</p>\n\n<p>It\'s free for single developers, runs on IIS and is built on .net so it should be a fairly familiar stack for you to switch to.</p>\n'}, {'answer_id': 31652, 'author': 'Adam', 'author_id': 3142, 'author_profile': 'https://Stackoverflow.com/users/3142', 'pm_score': 1, 'selected': False, 'text': '<p>i used vss for years until switching to svn about two years ago.  my biggest complaints about vss were the poor network performance (that problem may be solved now) and the pessimistic locking of files.  svn solved both those, is easy to set up (i use collabnet server and tortoisesvn client, although there are two good visual studio plugins: visualsvn - commercial, and ankhsvn - open source), easy to use and administer, and well documented.</p>\n\n<p>it\'s tempting to say "if it\'s not broken then don\'t fix it" but you would get to learn a more modern source control tool and, perhaps more importantly, new ways of using source control (e.g. more frequent branching and merging) that the new tool would support.</p>\n'}, {'answer_id': 31659, 'author': 'Joshua McKinnon', 'author_id': 235, 'author_profile': 'https://Stackoverflow.com/users/235', 'pm_score': 2, 'selected': False, 'text': "<p>Don't worry about VSS corrupting you, worry about VSS corrupting your data. It does not have a good track record in that department.</p>\n\n<p>Back up frequently if you do not switch to a different version control system. Backups should be happening daily even with other SCMs, but it's doubly important with VSS.</p>\n"}, {'answer_id': 31662, 'author': 'Shawn Miller', 'author_id': 247, 'author_profile': 'https://Stackoverflow.com/users/247', 'pm_score': 3, 'selected': False, 'text': '<p>Looks like SubVersion is the winner here.  I\'d do yourself a favor and use <a href="http://www.visualsvn.com/server/" rel="noreferrer">VisualSVN Server</a>.  It\'s free and will save you a bunch of installation headaches.</p>\n'}, {'answer_id': 31668, 'author': 'Orion Edwards', 'author_id': 234, 'author_profile': 'https://Stackoverflow.com/users/234', 'pm_score': 1, 'selected': False, 'text': "<p>If you only have 2 people, and you mostly work independantly, git is going to give you a lot more flexibility, power, and be far and away the fastest to work with.</p>\n\n<p>It is however a pain in the backside to use. Using VSS you're obviously programming for windows - if you're doing Win32 API stuff in C then git will be a learning curve but will be quite interesting.</p>\n\n<p>If the depths of your knowledge however only extend to ASP and Visual Basic, just use subversion. Walk before you can run.</p>\n\n<p>** I'm not trying to say if you only know VB you're dumb or anything like that, but that git can be very finicky and picky to use (if you've used the WinAPI in C you know all about picky and finicky), and you may want a more gradual introduction to SCM than git provides</p>\n"}, {'answer_id': 31732, 'author': 'David Webb', 'author_id': 3171, 'author_profile': 'https://Stackoverflow.com/users/3171', 'pm_score': 3, 'selected': False, 'text': '<p>I\'ve recently started using <a href="http://www.selenic.com/mercurial/wiki/" rel="noreferrer">Mercurial</a> for some of my work.  It\'s a distributed system like Git but seems easier to use and seems far better supported on Windows, the latter of which was crucial for me.</p>\n\n<p>With distributed source code control every user has a complete local copy of the repository.  If you\'re the only person working on a project, as you say you often are,  this can simplify things a lot since you just create your own repository and do all your commits etc. locally.  If you want to bring on other developers later you can just push the full contents of your repository - current versions and all history - to another system, either on a shared server or directly on to another users\' workstation.</p>\n\n<p>If you\'re working only with a local repository remember you\'ll need a also backup solution as there isn\'t a copy of all your code on a shared server. </p>\n\n<p>I think that Mercurial has lots of other advantages over Subversion, but it does have a big downside which has already been mentioned as a plus point of Subversion: there a <strong>lots</strong> of third party tools and integrations for Subversion.  As Mercurial hasn\'t been around nearly as ong the choice is much less.  On Windows it seems that you either have to use the command line (my choice) or the <a href="http://tortoisehg.sourceforge.net/" rel="noreferrer" title="Tortoise Hg">TortoiseHg</a> Windows Explorer integration.</p>\n'}, {'answer_id': 31814, 'author': 'Sergio Acosta', 'author_id': 2954, 'author_profile': 'https://Stackoverflow.com/users/2954', 'pm_score': 2, 'selected': False, 'text': "<p>I don't agree with the people that say that if you don't have problems you'd better not switch.</p>\n\n<p>I think that SCM is some of the disciplines a good developer should know well, and frankly, even if you master VSS you are just experimenting a small fraction of the advantages a good SCM tool and SCM strategy can do for you and for your team.</p>\n\n<p>Obviously evaluate and test the alternatives first in a non-production environment.</p>\n"}, {'answer_id': 31835, 'author': 'Murph', 'author_id': 1070, 'author_profile': 'https://Stackoverflow.com/users/1070', 'pm_score': 2, 'selected': False, 'text': "<p>At work we use subversion with TortoiseSVN - works very nicely but it is philosophically different to VSS (not really a problem if there's just you but worth being aware of). I really like the fact that the whole repository has a revision number.</p>\n\n<p>Given a free choice I'd've probably gone with vault but at the time I had zero budget. </p>\n\n<p>I'm looking at things for personal use. There are reasons to use subversion and reasons to use something completely different. The alternatives I'm considering are Vault (as before, free for single use) and Bazaar. GIT I've had to dismiss as I am, unashamedly, a Windows person and right now GIT just isn't.</p>\n\n<p>The distributed nature of GIT and the option of private/temporary checkins (assuming I've understood what I've read) <em>is</em> attractive - hence my looking at Bazaar. </p>\n\n<p><strong>Update:</strong> I did some more digging and playing and I actually went for Mercurial for personal use, integrated install with TortoiseHg makes things very simple and it seems to be well regarded. I'm still trying to work out how to force an automagic mirror of commits to a server and there appear to be some minor limitations to the ignore function but its doing the job nicely so far...</p>\n\n<p>Murph</p>\n"}, {'answer_id': 44017, 'author': 'Mark', 'author_id': 4405, 'author_profile': 'https://Stackoverflow.com/users/4405', 'pm_score': 3, 'selected': False, 'text': "<p>For what it's worth, Perforce is a potential option if you truly stick to 1 or 2 users.  Current perforce docs says you have have 2 users and 5 clients without having to start purchasing licenses.</p>\n\n<p>You might have reasons to switch to perforce depending on your workflow and if you have need of branching the way perforce does it.  Not being overly familar with some the other products mentioned here, I can't tell you how perforce compares in the feature department for things like branching, etc.</p>\n\n<p>It is speedy, and it's been rock solid for us (300+ developers on a 10+ year old codebase).  We store several T of info and it's been quite responsive.  With a small number of users, I doubt that you'd experience many performance troubles assuming you had good hardware for your server.</p>\n\n<p>Having used VSS before, I believe that you can get so many benefits out of a better SCM system that switching should be considered regardless of whether you have corruption or not.  Branching alone might be worth it for you.  A true client/server model, better interfaces (programmatically and command line) are a couple of other things that could really help just improve your workflow and help somewhat with productivity.</p>\n\n<p>In summary, my view of Perforce is:</p>\n\n<ul>\n<li>It's fast and quite reliable</li>\n<li>Plenty of cross platform client tools (windows, unix, mac, etc)</li>\n<li>it's free for 2 users and 5 clients</li>\n<li>Integrates into developer studio (and other tools)</li>\n<li>Has a powerful branching system (that might or might not be right for you).</li>\n<li>Has several scriptable interfaces (python, perl, ruby, C++)</li>\n</ul>\n\n<p>Certainly YMMV -- I only offer this alternative up as something that might be worthwhile looking into.</p>\n"}, {'answer_id': 44062, 'author': 'Ant', 'author_id': 2289, 'author_profile': 'https://Stackoverflow.com/users/2289', 'pm_score': 3, 'selected': False, 'text': '<p>VSS is horrible.  I may be channelling Spolsky (not sure if he\'s said this), but using VSS is actually worse than not using source control at all.  Despite its name, it <em>isn\'t</em> safe.  It creates the illusion of safety without providing it.</p>\n\n<p>Without VSS, you\'d probably be making regular backups of your code.  With VSS, you\'ll think, "Mehh, it\'s already under source control.  Why bother backing up?"  Great until it <a href="http://www.highprogrammer.com/alan/windev/sourcesafe.html" rel="noreferrer">corrupts your entire codebase</a> and you lose everything.  (This, incidentally, happened at a company I worked at.)</p>\n\n<p>Get rid of VSS as soon as you can and switch to a real source control solution.</p>\n'}, {'answer_id': 44070, 'author': 'Dale Ragan', 'author_id': 1117, 'author_profile': 'https://Stackoverflow.com/users/1117', 'pm_score': 1, 'selected': False, 'text': '<p>If you are a one man show and strictly a Microsoft shop, then <a href="http://www.sourcegear.com/vault/index.html" rel="nofollow noreferrer">SourceGear Vault</a> is definitely a prime candidate for switching too.</p>\n\n<p>Features:</p>\n\n<ul>\n<li>Free for Single User, great for you</li>\n<li>It uses SQL Server for it\'s backend, therefore data reliability is huge</li>\n<li>It has atomic check-ins, all files checked-in at the same time are arranged in a group and are called a changeset.</li>\n<li>VisualStudio integration.</li>\n<li>Has a tool for importing from SourceSafe, therefore you can keep your history</li>\n<li>The client communicates with the server over HTTP, therefore accessing the source outside the office remotely can be setup very easily and performs well, because they only transfer the deltas of the changes being submitted and received.  You can use SSL to secure the connection.</li>\n</ul>\n\n<p>I would definately consider this as an option.</p>\n'}, {'answer_id': 71434, 'author': 'MrHinsh - Martin Hinshelwood', 'author_id': 11799, 'author_profile': 'https://Stackoverflow.com/users/11799', 'pm_score': 1, 'selected': False, 'text': '<p>If you want a full Life Cycle in one package then you probably want want to look at Visual Studio Team System. It does require a server, but you can get a "Action Pack" from MS that includes all the licencies that you need for "Team Foundation Server Workgroup Edition" from the Partner centre.</p>\n\n<p>With this you will get Bug, Risk and Issue tracking as well as many other features :)</p>\n\n<ul>\n<li>Source Control</li>\n<li>Work Item Tracking (Requirements, Bugs, Issues, Risks and Tasks)</li>\n<li>Reporting on your project data (Work Item Tracking, Build, Checkins and more in one qube)</li>\n<li>Code Analysis</li>\n<li>Unit Testing</li>\n<li>Load Testing</li>\n<li>Performance Analysis</li>\n<li>Automated Build</li>\n</ul>\n'}]
['https://Stackoverflow.com/questions/31627', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1433/']