<p>What's the recommended source control system for a very small team (one developer)?<BR><BR>
Price does not matter. Customer would pay :-)<BR>
I'm working on Vista32 with VS 2008 in C++ and later in C# and with WPF. Setting up an extra (physical) server for this seems overkill to me. <BR><BR>Any opinions?</p>

[{'answer_id': 45402, 'author': 'Erick Sgarbi', 'author_id': 4171, 'author_profile': 'https://Stackoverflow.com/users/4171', 'pm_score': 4, 'selected': False, 'text': '<p><a href="http://www.sourcegear.com/vault/index.html" rel="nofollow noreferrer">Sourcegear\'s Vault</a> is a great option, it runs on SqlServer and it has been around for many years. I would not use any version of VSS (Visual Source Safe). </p>\n'}, {'answer_id': 45403, 'author': 'Alexander Morland', 'author_id': 4013, 'author_profile': 'https://Stackoverflow.com/users/4013', 'pm_score': 0, 'selected': False, 'text': '<p>I dont see why the fact that your one developer changes anything on the source control issue. I would follow the same system (in fact I do on my solo projects).  I use <a href="http://wush.net/" rel="nofollow noreferrer">wush.net</a> (svn and trac) in those cases. It\'s fast to set up and dont require that you yourself do or know any server issues. I recommend you use something like this. </p>\n'}, {'answer_id': 45404, 'author': 'Thomas Watnedal', 'author_id': 4059, 'author_profile': 'https://Stackoverflow.com/users/4059', 'pm_score': 4, 'selected': False, 'text': '<p>I would definitely recommend <a href="http://git-scm.com/" rel="noreferrer" title="git">git</a></p>\n\n<p>Works great for both big and small teams. Only drawback is poor native windows support. Although it works fine for me in Cygwin. There also exists a <a href="http://code.google.com/p/msysgit/downloads/list" rel="noreferrer" title="msysGit">native windows port</a>.</p>\n\n<p>Some of its benefits:</p>\n\n<ul>\n<li>Excellent support for a non-linear work flow. Its branching and merging is far better than eg Subversion.</li>\n<li>Good tools to navigate your repository</li>\n<li>Handles large projects well.</li>\n<li>It is not possible to modify the history without changing the cryptographic signature of your repository</li>\n<li>With its non monolithic design, it is easy to script.</li>\n</ul>\n\n<p>Some people find that it has a steep learning curve. But once you understand it you can do almost anything you would want with it.</p>\n'}, {'answer_id': 45405, 'author': 'David Webb', 'author_id': 3171, 'author_profile': 'https://Stackoverflow.com/users/3171', 'pm_score': 3, 'selected': False, 'text': '<p>I use <a href="http://www.selenic.com/mercurial/wiki/" rel="nofollow noreferrer">Mercurial</a>.  It runs a treat running stand alone on my Vista development system with no other dependencies required.  I use the command line but there\'s also <a href="http://tortoisehg.sourceforge.net/" rel="nofollow noreferrer">TortoiseHG</a> to integrate with Explorer.</p>\n\n<p>Two comments:</p>\n\n<ol>\n<li>There are other tools which probably integrate with VS better.  I think Subversion has nice VS plug ins.</li>\n<li>The benefit of a separate server is that it\'s a nice backup of all your work in case your HDD dies on you etc. so discount having one.</li>\n</ol>\n\n<p><strong>Edit:</strong> @Slartibartfast - if you just want to run source code control on a single machine a Distributed Source Code Control tool like git or Mercurial is ideal since they\'re designed to run complete repositories on a machine without the overhead of a server.  The fact that you never connect your repository to anyone else\'s to push and pull changes doesn\'t mean that tool won\'t be right. </p>\n'}, {'answer_id': 45409, 'author': 'Slartibartfast', 'author_id': 4433, 'author_profile': 'https://Stackoverflow.com/users/4433', 'pm_score': 1, 'selected': False, 'text': "<p>Well, for start, you don't need distributed one :)\nI'm not sure what this physical part means, because you could put svn server on your own machine in little trouble. </p>\n\n<p>On the other hand, NetBeans have local history module that logs all local changes of a file. Maybe something like that would be enough for you if Visual Studio have something similar.</p>\n"}, {'answer_id': 45410, 'author': 'Stormenet', 'author_id': 2090, 'author_profile': 'https://Stackoverflow.com/users/2090', 'pm_score': 2, 'selected': False, 'text': '<p>A source control system doesn\'t care if there\'s only one developer involved :)</p>\n\n<p>I would recommend that you use a source control system that you\'ve used before and liked.\n<br />If you like vs 2008 integration of the source control system however I would go with <a href="http://msdn.microsoft.com/en-us/tfs2008/default.aspx" rel="nofollow noreferrer"> TFS</a> although I never had the experience to set it up but it shouldn\'t be so hard.</p>\n\n<p>Another possibility is to use svn (you\'ll find some servers on google) and use <a href="http://tortoisesvn.tigris.org/" rel="nofollow noreferrer">Tortoisesvn</a> that integrates into the windows shell and is nice to work with.</p>\n'}, {'answer_id': 45411, 'author': 'Niki', 'author_id': 4392, 'author_profile': 'https://Stackoverflow.com/users/4392', 'pm_score': 3, 'selected': False, 'text': '<p>You can use  Vault from SourceGear, <strong>the</strong> replacement tool for visual studio source safe.\nThe IDE is integrated in Visual Studio.</p>\n\n<p>The tool is free for single user.</p>\n\n<p>More information:  <a href="http://www.sourcegear.com/vault/index.html" rel="nofollow noreferrer">http://www.sourcegear.com/vault/index.html</a> </p>\n'}, {'answer_id': 45412, 'author': 'binOr', 'author_id': 990, 'author_profile': 'https://Stackoverflow.com/users/990', 'pm_score': 4, 'selected': False, 'text': "<p>Go for subversion and tortoiseSVN, you don't need to set it up on a server. </p>\n\n<ul>\n<li>Costs are zero</li>\n<li>The subversion documentation is great and fun to read</li>\n<li>tortoiseSVN is a very convenient client</li>\n</ul>\n"}, {'answer_id': 45419, 'author': 'Frep D-Oronge', 'author_id': 3024, 'author_profile': 'https://Stackoverflow.com/users/3024', 'pm_score': 4, 'selected': False, 'text': '<p>Subversion has very low barrier to entry.</p>\n\n<p><a href="http://tortoisesvn.tigris.org/" rel="nofollow noreferrer">TortoiseSVN</a> is a free client, and integrates into your explorer- i.e. in right mouse click menu.</p>\n\n<p>The repository can be just a directory somewhere on your PC or on a network drive. Backing up just means zipping up this directory </p>\n\n<p>There are a few plugins to Visual studio for Subversion, <a href="http://ankhsvn.open.collab.net/" rel="nofollow noreferrer">AnkSvn</a> is one I have used, it is free and integrates nicely (i.e it will be smart about moving and deleting files etc)</p>\n\n<p>Subversion is a good choice for one developer.</p>\n\n<p><strong>Update:</strong></p>\n\n<p>Since this post, I\'ve been using Mercurial. It is a Distributed SVN. The \'distributed\' aspect may not be directly useful to a sole developer, however it is better at merging and is somewhat faster. There is also a free and good Windows Explorer extension client -  <a href="http://tortoisehg.bitbucket.io/" rel="nofollow noreferrer">Tortoise Hg</a>.</p>\n\n<p>So in summary, if you are the sort of person who will work on many branches at once (doing spikes etc) or if you work on multiple PCs at once and would like full offline access to checkin history on both, then <em>Mercurial</em>. If you just want simple tracking and a well proven and easy to understand solution, then <em>Subversion</em>.</p>\n'}, {'answer_id': 45440, 'author': 'Grzegorz Gierlik', 'author_id': 1483, 'author_profile': 'https://Stackoverflow.com/users/1483', 'pm_score': 7, 'selected': True, 'text': '<p>I would use Subversion (in fact I use it) [<strong>update</strong>: Jul 2014 -- I use Git -- see end of the answer].\nSVN is:</p>\n\n<ul>\n<li>free,  </li>\n<li>good enough (see disadvantages below),  </li>\n<li>simple,  </li>\n<li>works fine on Windows (and Linux too), </li>\n<li>a lot of people use it so it\'s easy to get help, </li>\n<li>can integrate with most of IDEs i.e. <strong>Visual Studio</strong> (i.e. <a href="http://ankhsvn.open.collab.net/" rel="nofollow noreferrer">ankhsvn</a> or <a href="http://www.visualsvn.com/" rel="nofollow noreferrer">VisualSVN</a> -- <a href="https://stackoverflow.com/questions/453481/subversion-plugin-to-visual-studio">more info</a>) or <strong>Eclipse</strong> (i.e. <a href="http://sourceforge.net/projects/subclipse/" rel="nofollow noreferrer">Subclipse</a> -- <a href="https://stackoverflow.com/questions/185486/which-eclipse-subversion-plugin-should-i-use">here</a> someone asked about that).</li>\n</ul>\n\n<p>I would <strong>strongly</strong> recommended separate machine to source control server. At best somewhere <em>on the cloud</em>. Advantages:</p>\n\n<ul>\n<li>You don\'t lost your source control repositories if your development box dies.</li>\n<li>You don\'t have to worry about maintenance of one more box.</li>\n</ul>\n\n<p>There are companies which <a href="http://www.svnhostingcomparison.com/" rel="nofollow noreferrer">host SVN repositories</a>.</p>\n\n<p><a href="http://subversion.apache.org/packages.html" rel="nofollow noreferrer">Here</a> are links to SVN (client and server) packages for various operating systems.</p>\n\n<h1>Disadvantages of SVN</h1>\n\n<p>I am using SVN on Windows machine for about 5 years and found that SVN has a few disadvantages :).</p>\n\n<h2>It is slow on large repositories</h2>\n\n<p>SVN (or its client -- TortoiseSVN) has one <strong>big</strong> disadvantage -- it terrible slow (while updating or committing) on large (thousands of files) repositories unless you have <a href="http://en.wikipedia.org/wiki/Solid-state_drive" rel="nofollow noreferrer">SSD</a> drive.</p>\n\n<h2>Merging can be difficult</h2>\n\n<p>Many people complain about how hard merging is with SVN.</p>\n\n<p>I do merging for about 4 years (including about 2 years in CVS -- that was terrible, but doable) and about 2 years with SVN.</p>\n\n<p>And personally I don\'t find it hard -- on the other hand -- any merge is easy after merging branches in CVS :).</p>\n\n<p>I do merge of large repository (two repositories in fact) once a week and rarely I have conflicts which are hard to solve (most of conflicts are solved automatically with <em>diff</em> software which I use).</p>\n\n<p>However in case of project of a few developers merging should not be problem at all if you keep a few simple rules:</p>\n\n<ul>\n<li>merge changes often,</li>\n<li>avoid active development in various branches simultaneously.</li>\n</ul>\n\n<h2>Added in July 2011</h2>\n\n<p>Many devs recommended <a href="http://en.wikipedia.org/wiki/Distributed_revision_control_system" rel="nofollow noreferrer">Distributed Version Control</a> like <a href="http://git-scm.com/" rel="nofollow noreferrer">Git</a> or <a href="https://www.mercurial-scm.org/" rel="nofollow noreferrer">Mercurial</a>.</p>\n\n<p>From <strong>single developer</strong> perspective there are only a few important advantages of DVCS over SVN:</p>\n\n<ul>\n<li>DVCS can be faster.</li>\n<li>You can commit to local repository without access to central one.</li>\n<li>DVCS is hot thing and fancy to use/learn (if someone pay for your learning).</li>\n</ul>\n\n<p>And I don\'t think merging is a problem in case of single developer.</p>\n\n<p>Joel Spolsky wrote <a href="http://hginit.com/" rel="nofollow noreferrer">tutorial about Mercurial</a> which is definitively worth to read.</p>\n\n<p>So, despite of many advantages of DVCS I would stay with SVN if merging or speed is not a problem.</p>\n\n<p>Or try Mercurial, which according to <a href="https://stackoverflow.com/questions/995636/popularity-of-git-mercurial-bazaar-vs-which-to-recommend">this</a> and <a href="https://stackoverflow.com/questions/2550091/best-support-now-on-windows-mercurial-or-git">this</a> SO questions, is better supported (in July 2011) on Windows.</p>\n\n<h2>Added in July 2014</h2>\n\n<p>For about a year I use Git (Git Bash mainly) for my pet-projects (i.e. solving Euler problems) and local branches for each Euler problem are really nice feature -- exactly as it is described as advantage of DVCS. </p>\n\n<p>Today Git tooling on Windows is much, much better then 2 or more years ago.\nYou can use remote repo (like GitHub or ProjectLocker and many others) to keep \ncopy of your project away from your workstation with no extra effort/money.</p>\n\n<p>However I use GUI client only to looks at diffs (and sometimes to choose files to commit),\nso it\'s better to not afraid of command line -- it\'s really nice.</p>\n\n<p>So as of today I would go with Git.</p>\n'}, {'answer_id': 45502, 'author': 'Nic Wise', 'author_id': 2947, 'author_profile': 'https://Stackoverflow.com/users/2947', 'pm_score': 2, 'selected': False, 'text': '<p>I\'d recommend two things:</p>\n\n<p>First up, that other server - what happens if your machine dies? the house burns down? etc. Having it on another machine is a good idea from a redundancy point of view.</p>\n\n<p>The second one is WHAT:</p>\n\n<p>If you are very familiar with visual source(un)safe, think about SourceGearVault. It\'s VERY nice, very fast, and very much a vastly improved "clone" of VSS (ie works the same way from the users POV, not under the hood). Needs SQL server and windows tho (it\'s .NET + SQL server). Free for 1 user.</p>\n\n<p>Of you are not, then I suggest you do one of two things:</p>\n\n<p>First, get VisualSVN. It\'s great, works with VS2008 really well.\nSecond, if you MUST run it locally, get VisualSVN server (free!). Make sure you have a good backup plan. Runs on XP/2003/2008/Vista etc.It\'s just Apache + SVN, under the hood, so it just saves you on the setup - took me 5 mins to install and have it running.</p>\n\n<p>OR, and I prefer this one:</p>\n\n<p>go somewhere like Unfuddle, Dreamhost etc, and get hosting for SVN. It\'s private, it\'s fast, and most of all - it\'s OFFSITE. My dreamhsot account, with something crazy like 500GB of storage and 1-2TB of transfer/month costs about $6/month! There are others which do SVN hosting + bug tracking etc. Look around.</p>\n\n<p>But yeah - SVN is the schizzzznit.you could create a local repository, but I like having a remote, backed up server.</p>\n\n<p>TFS is total, utter overkill for 1 developer (or &lt;5 IMO)</p>\n'}, {'answer_id': 45508, 'author': 'jespern', 'author_id': 112415, 'author_profile': 'https://Stackoverflow.com/users/112415', 'pm_score': 6, 'selected': False, 'text': '<p>I would also recommend Mercurial. It\'s command set is much like the one found in Subversion, so the learning curve is not that steep. As mentioned earlier, it\'s designed to run locally, but it\'s also easy to share/merge changes across computers, or even just push it to a remote server for backups.</p>\n\n<p>It offers excellent tools, like <a href="http://tortoisehg.sourceforge.net/" rel="noreferrer">TortoiseHG</a>, and it has good plugins for NetBeans and Eclipse. It also runs natively on Win32, as it\'s written in Python.</p>\n\n<p>If you don\'t want to set up a server yourself (for backups, e.g.), there are free hosting providers available; there\'s a comprehensive list on <a href="http://www.selenic.com/mercurial/wiki/index.cgi/MercurialHosting" rel="noreferrer">The Mercurial Wiki</a>.</p>\n'}, {'answer_id': 45722, 'author': 'htanata', 'author_id': 4353, 'author_profile': 'https://Stackoverflow.com/users/4353', 'pm_score': 1, 'selected': False, 'text': '<p>I would recommend Subversion since it\'s for single developer and I assume that you\'re not doing complex merging and lots of log/history checking.</p>\n\n<p>Seems like many people are using <a href="http://svnrepository.com/" rel="nofollow noreferrer">http://svnrepository.com/</a> for their hosting. It comes with Trac and even Git if you need it later.</p>\n'}, {'answer_id': 47160, 'author': 'Steve Steiner', 'author_id': 3892, 'author_profile': 'https://Stackoverflow.com/users/3892', 'pm_score': 4, 'selected': False, 'text': '<p>I\'m surprised no one has mentioned <a href="http://www.perforce.com/index.html" rel="noreferrer">Perforce</a>. It\'s free for 2 people, blazingly fast, and integrates with VS.  Also <a href="http://msdn.microsoft.com/en-us/library/ms680641.aspx" rel="noreferrer">source server</a> has bindings for it by default.  </p>\n\n<p>In addition to source control, it really is worthwhile to complete the loop and setup a <a href="http://msdn.microsoft.com/en-us/library/ms680693(VS.85).aspx" rel="noreferrer">symbol server</a> and a <a href="http://msdn.microsoft.com/en-us/library/ms680641.aspx" rel="noreferrer">source server</a>, so that you have simple debugging of anything you\'ve shipped (e.g. no more searching for pdbs or source that match the binary).  Both source and symbol server are completely free and supported in VS since 2005.  </p>\n'}, {'answer_id': 47165, 'author': 'Kibbee', 'author_id': 1862, 'author_profile': 'https://Stackoverflow.com/users/1862', 'pm_score': 0, 'selected': False, 'text': '<p>I would recommend using subversion.  Many have recommended using a seperate box as a server, in case your dev machine dies.  What happens when the SVN server dies?  The answer here is that no matter where you choose to run the server, ensure you always do frequent backups, possibly automated daily to some secondary, preferrebly offsite machine.</p>\n'}, {'answer_id': 47193, 'author': 'Graeme Perrow', 'author_id': 1821, 'author_profile': 'https://Stackoverflow.com/users/1821', 'pm_score': 0, 'selected': False, 'text': '<p>I use Perforce as well for my own personal stuff, mainly because we use it at work. There are emacs bindings for it as well, so you can sync, check stuff in or out, etc. all from within emacs.</p>\n'}, {'answer_id': 60885, 'author': 'Jay Bazuzi', 'author_id': 5314, 'author_profile': 'https://Stackoverflow.com/users/5314', 'pm_score': 1, 'selected': False, 'text': "<p>Some good answers here.  </p>\n\n<p>I want to re-iterate the suggestion to use a separate computer to host the source control server, although it doesn't have to be a <em>dedicated</em> machine.  It could be your Windows Home Server box, or some other server you're already running.  Or it could be a virtual machine hosted on some other server.  Whatever, just make it separate from the machine(s) where you write code.</p>\n\n<p>I also want to suggest that you get a good backup discipline for your server.  Something nightly at least; hourly if you can.  Back up to a dedicated device (like an external hard drive) or something offsite (a server in your cousin's house in another state) or in the cloud (Amazon S3).  Remember that your source code is your key asset; take care of it!</p>\n"}, {'answer_id': 103955, 'author': 'scobi', 'author_id': 14582, 'author_profile': 'https://Stackoverflow.com/users/14582', 'pm_score': 0, 'selected': False, 'text': '<p>I recently moved my studio from Subversion to Perforce and put some notes about it, sort of a postmortem, on my blog <a href="http://scottbilas.com/2008/03/01/subversion-to-perforce-post-mortem/" rel="nofollow noreferrer">here</a>. Hope it\'s useful. </p>\n'}, {'answer_id': 104082, 'author': 'Aku Ankka', 'author_id': 19120, 'author_profile': 'https://Stackoverflow.com/users/19120', 'pm_score': 3, 'selected': False, 'text': '<p>There are two possible solutions for your problem: centralized VCS or Distributed VCS (DVCS).</p>\n\n<p>Centralized VCS like Subversion would satisfy you feature for committing and browsing the log. It also enables you to safely store your repository to another computer which should be one of your major goals as hard drive failure is always a possibility. However, using Subversion the history still resides only at the central location making it vulnerable and you stated that you do not want to have another server.</p>\n\n<p>Distributed Version Control Systems (DVCS) such as Mercurial and Git enable you to do more complex operations on your repository. With both of those tools the whole repository resides with the same computer making it bit easier to make backups and using the repository with another computer e.g. laptop. While Mercurial might seem complex at first the operations you would use with subversion are pretty much the same with Mercurial. Therefore there is no extra overhead to get started if you already know Subversion and you can easily use more advanced features of Mercurial later.</p>\n\n<p>You should be able to find online repository service for your Mercurial repository enabling you to make easy backups and do collaboration some day if you have the need for it.</p>\n\n<p>My recommendation is Mercurial with TortoiseHg.</p>\n'}, {'answer_id': 104113, 'author': 'Stephen C. Steel', 'author_id': 19131, 'author_profile': 'https://Stackoverflow.com/users/19131', 'pm_score': 2, 'selected': False, 'text': "<p>A number of the posts advocate putting the repository on a server because it provides redundancy. I don't think this is all that helpful for a single user. Using a separate server machine adds a lot of complexity, but it doesn't buy much redundancy: if you lose the server machine, you still have the current sources on your development machine, but you may have lost ALL your history. Putting the repository on a server does make sense if that server is being regularly backed up. Using an exernal hosting service for the repository can provide storage redundancy, but you're at the mercy of the external service AND you need an internet connection to access the repository. If you use an external host, make frequent backups of the repository that you keep control of!</p>\n\n<p>I would presonally recommend TortoiseSVN using a local file based repository. Just make sure you backup the local repository to a second machine or external media (such as CD-ROMs) on a regular basis.</p>\n"}, {'answer_id': 104127, 'author': 'Smallinov', 'author_id': 8897, 'author_profile': 'https://Stackoverflow.com/users/8897', 'pm_score': 2, 'selected': False, 'text': '<p>I realize that cost isn\'t a problem but a nice free solution that wouldn\'t involve checking in and out would be to host the code within <a href="http://getdropbox.com" rel="nofollow noreferrer">Dropbox</a> by doing this you\'d instantly get versioning and backup which are the main features that a single developer system would provide.</p>\n'}, {'answer_id': 104160, 'author': 'Tanj', 'author_id': 4275, 'author_profile': 'https://Stackoverflow.com/users/4275', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://bazaar-vcs.org/" rel="nofollow noreferrer">Bazaar</a> is a good version control system. I like to use it for my linux configs because you don\'t need to create a separate repo.</p>\n'}, {'answer_id': 138781, 'author': 'Anthony', 'author_id': 5599, 'author_profile': 'https://Stackoverflow.com/users/5599', 'pm_score': 2, 'selected': False, 'text': '<p>A while back I did a how-to blog post on using SVN with only one developer.\nI called it <a href="http://blogs.conchango.com/anthonysteele/archive/2006/11/05/Single-serving-source-control.aspx" rel="nofollow noreferrer">Single serving source control</a> </p>\n'}, {'answer_id': 651108, 'author': 'cparrish817', 'author_id': 9677, 'author_profile': 'https://Stackoverflow.com/users/9677', 'pm_score': 1, 'selected': False, 'text': '<p>I\'ve been working with <a href="http://bazaar-vcs.org" rel="nofollow noreferrer">Bazaar</a> now for a few weeks and really like it. I\'m a linux developer so don\'t really know much about Tortois but if you like it you should know that there is a <a href="http://bazaar-vcs.org/TortoiseBzr" rel="nofollow noreferrer">Tortoisbzr</a></p>\n'}, {'answer_id': 703817, 'author': 'skiphoppy', 'author_id': 18103, 'author_profile': 'https://Stackoverflow.com/users/18103', 'pm_score': 1, 'selected': False, 'text': '<p>Hands down I would use git, and I believe many reasons why a single-developer would like to use git are hinted at or described in <a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/" rel="nofollow noreferrer">git magic</a></p>\n'}, {'answer_id': 23130141, 'author': 'user3095323', 'author_id': 3095323, 'author_profile': 'https://Stackoverflow.com/users/3095323', 'pm_score': 1, 'selected': False, 'text': '<p>I use Springloops - <a href="http://www.springloops.io" rel="nofollow">version control tool for developers</a></p>\n\n<ol>\n<li>SVN / Git version control</li>\n<li>Automatic deployment to servers</li>\n<li>Create repositories</li>\n<li>Invite people</li>\n<li>Import files</li>\n<li>Great support</li>\n</ol>\n\n<p>So, try Springloops</p>\n'}]
['https://Stackoverflow.com/questions/45400', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/3714/']