<p>I need to implement version control, even for just the developing I do at home.  I have read about how great subversion is for the past couple of years and was about to dedicate myself to learning this on the side until I heard about Git being the up and coming version control system.</p>
<p>Given the situation, should I hold off and see which one comes out on top? What are their relative advantages?</p>
<p>One issue I noticed with Git is, there are not many full featured GUIs, which is important to many users on my team.</p>
<p>Also, wouldn't mind suggestions on how to get started with one or the other. (tutorials, etc.)</p>

[{'answer_id': 2665, 'author': 'Karl Seguin', 'author_id': 34, 'author_profile': 'https://Stackoverflow.com/users/34', 'pm_score': 4, 'selected': False, 'text': "<p>Use subversion, it's easy to setup, easy to use, and has plenty of tools. Any future revision system will have an import from SVN feature, so it isn't like you can't change down the road if your needs grow.</p>\n"}, {'answer_id': 2667, 'author': 'Vaibhav', 'author_id': 380, 'author_profile': 'https://Stackoverflow.com/users/380', 'pm_score': 4, 'selected': False, 'text': "<p>Go for SVN. If you have never used source control before, it won't matter to you one way or the other.</p>\n\n<p>Also, there is not a large amount of learning involved in using a Source Control system. If you learn one, you can easily switch over to another at a later date.</p>\n\n<p>SVN is a great tool, and it should take care of most of your needs. And since it's been around, it has a fair sharer of GUI tools (TortoiseSVN, for example).</p>\n\n<p>Go for SVN.</p>\n"}, {'answer_id': 2668, 'author': 'Jonathan Works', 'author_id': 309844, 'author_profile': 'https://Stackoverflow.com/users/309844', 'pm_score': 7, 'selected': True, 'text': '<p>The most important thing about version control is:</p>\n<p><em><strong>JUST START USING IT</strong></em></p>\n<p>Not using version control is a horrible idea. If you are not using version control, stop reading right now and start using it.</p>\n<p>It is very easy to convert from</p>\n<pre><code>cvs&lt;-&gt;svn&lt;-&gt;git&lt;-&gt;hg\n</code></pre>\n<p>It doesn\'t matter which one you choose. Just pick the easiest one for you to use and start recording the history of your code. You can always migrate to another (D)VCS later.</p>\n<p>If you are looking for a easy to use GUI look at <a href="http://tortoisesvn.tigris.org/%22TortoiseSVN%22" rel="noreferrer">TortoiseSVN (Windows)</a> and <a href="http://www.versionsapp.com/" rel="noreferrer">Versions (Mac)</a> (Suggested by <a href="https://stackoverflow.com/questions/2658?sort=newest#2708">codingwithoutcomments</a>)</p>\n<hr />\n<p>Edit:</p>\n<blockquote>\n<p><a href="https://stackoverflow.com/questions/2658/#2672">pix0r said:</a></p>\n<p>Git has some nice features, but you won\'t be able to appreciate them unless you\'ve already used something more standard like CVS or Subversion.</p>\n</blockquote>\n<p>This. Using git is pointless if you don\'t know what version control can do for you.</p>\n<p>Edit 2:</p>\n<p>Just saw this link on reddit: <a href="http://www.addedbytes.com/cheat-sheets/subversion-cheat-sheet/" rel="noreferrer">Subversion Cheat Sheet</a>. Good quick reference for the svn command line.</p>\n'}, {'answer_id': 2669, 'author': 'Rob Allen', 'author_id': 149, 'author_profile': 'https://Stackoverflow.com/users/149', 'pm_score': 2, 'selected': False, 'text': "<p>Don't wait. Pick one, and go with it. All systems will have their pluses and minuses. Your power could go out, you computer gets stolen, or you forget to undo a major change and all your code gets fried while you're waiting to see who emerges victorious.</p>\n"}, {'answer_id': 2670, 'author': 'GateKiller', 'author_id': 383, 'author_profile': 'https://Stackoverflow.com/users/383', 'pm_score': 0, 'selected': False, 'text': "<p>When I decided I must use a code versioning system, I looked around for any good tutorials on how to get started but didn't find any that could help me.</p>\n\n<p>So I simplely installed the SVN Server and Tortoise SVN for the client and dived into the deepend and i learn't how to use it along the way.</p>\n"}, {'answer_id': 2672, 'author': 'pix0r', 'author_id': 72, 'author_profile': 'https://Stackoverflow.com/users/72', 'pm_score': 4, 'selected': False, 'text': '<p>The <a href="http://svnbook.red-bean.com/" rel="nofollow noreferrer">Subversion Book</a> is your best bet for learning the tool.  There may be other quick-start tutorials out there, but the Book is the best single reference you\'ll find.</p>\n\n<p>Git has some nice features, but you won\'t be able to appreciate them unless you\'ve already used something more standard like CVS or Subversion.  I\'d definitely agree with the previous posters and start with Subversion.</p>\n'}, {'answer_id': 2673, 'author': 'Ishmaeel', 'author_id': 227, 'author_profile': 'https://Stackoverflow.com/users/227', 'pm_score': 0, 'selected': False, 'text': "<p>Start using SVN for your actual work, but try to make time for fiddling around with Git and/or Mercurial. SVN is reasonably stable for production, but eventually you'll face a scenario where you'll <em>need</em> a distributed SCM, by which time you'll be properly armed and the new systems will be mature enough.</p>\n"}, {'answer_id': 2675, 'author': 'Brandon Wood', 'author_id': 423, 'author_profile': 'https://Stackoverflow.com/users/423', 'pm_score': 2, 'selected': False, 'text': '<p>My vote goes to Subversion.  It\'s very powerful, yet easy to use, and has some great tools like <a href="http://tortoisesvn.tigris.org/" rel="nofollow noreferrer">TortoiseSVN</a>.</p>\n\n<p>But as others have said before me, JUST START USING IT.  Source control is such an important part of the software development process.  No "serious" software project should be without it.</p>\n'}, {'answer_id': 2676, 'author': 'Rytmis', 'author_id': 266, 'author_profile': 'https://Stackoverflow.com/users/266', 'pm_score': 3, 'selected': False, 'text': '<p>For a friendly explanation of most of the basic concepts, see <a href="http://betterexplained.com/articles/a-visual-guide-to-version-control/" rel="noreferrer" title="Better Explained: A Visual Guide to Version Control">A Visual Guide to Version Control</a>. The article is very SVN-friendly.</p>\n'}, {'answer_id': 2678, 'author': 'Polsonby', 'author_id': 137, 'author_profile': 'https://Stackoverflow.com/users/137', 'pm_score': 1, 'selected': False, 'text': '<p>Yup, SVN for preference unless you really need git\'s particular features. SVN is hard enough; It sounds like git is more complicated to live with. You can get hosted svn from people like <a href="http://www.beanstalkapp.com/" rel="nofollow noreferrer">Beanstalk</a> - unless you have in-house Linux people, I\'d really recommend it. Things can go wrong horribly easily and it\'s nice to have someone else whose job it is to fix it.</p>\n\n<p>There\'s an excellent <a href="http://www.ericsink.com/scm/source_control.html" rel="nofollow noreferrer">tutorial</a> on revision control from Eric Sink which is worth reading no matter which system you use.</p>\n'}, {'answer_id': 2682, 'author': 'Mark Biek', 'author_id': 305, 'author_profile': 'https://Stackoverflow.com/users/305', 'pm_score': 0, 'selected': False, 'text': '<blockquote>\n  <p><a href="https://stackoverflow.com/questions/2658/#2674">superjoe30 writes</a>:</p>\n  \n  <blockquote>\n    <p>Related question (perhaps answers can be edited to answer this question as well):</p>\n    \n    <p>What about using source control on your own computer, if you\'re the sole programmer? Is >>this good practice? Are there related tips or tricks?</p>\n  </blockquote>\n</blockquote>\n\n<p>I use SVN for all of my personal projects.  I started off with running svn on my home machine but eventually migrated over to Dreamhost.  Their hosting packages that include Subversion are pretty reasonable.</p>\n'}, {'answer_id': 2708, 'author': 'CodingWithoutComments', 'author_id': 25, 'author_profile': 'https://Stackoverflow.com/users/25', 'pm_score': 2, 'selected': False, 'text': '<p>If you are on Mac OSX, I found http://www.versionsapp.com/">Versions to be an incredible (free) GUI front-end to SVN.</p>\n'}, {'answer_id': 2723, 'author': 'Grant', 'author_id': 30, 'author_profile': 'https://Stackoverflow.com/users/30', 'pm_score': 2, 'selected': False, 'text': '<p>At my current job, my predecessor did not use any kind of version control. There are just mountains of folders in at least 3 different places where he kept all of his projects. Any random project folder can be expected to find at least one folder name "project (OLD)" and one named "project"</p>\n\n<p>With version control, you never have to make copies of "safe" builds. You don\'t really have to worry about your IDE corrupting the file you\'re working on (I\'m looking at you, REALBasic 5.5) because is so easy to commit (Read: Save) your work every day.</p>\n\n<p>Needless to say, I installed version control the day after I found out it existed.</p>\n\n<p>Also, TortoiseSVN makes committing to the database as easy as right clicking a folder.</p>\n'}, {'answer_id': 2961, 'author': 'Wedge', 'author_id': 332, 'author_profile': 'https://Stackoverflow.com/users/332', 'pm_score': 2, 'selected': False, 'text': "<p>It's not that difficult to switch between version control systems. As others have mentioned the important thing is to start using anything as soon as possible. The benefits of using source control over not using source control vastly outweigh the differential benefits between different types of source control.</p>\n\n<p>Remember that no matter what version of source control you are using you will always be able to do a brute force conversion to another system by laying down the files from your old system onto disk and then importing those raw files into the new system.</p>\n\n<p>Moreover, being familiar with source control fundamentals is a very, very important skill to have as a software developer.</p>\n"}, {'answer_id': 3861, 'author': 'DShook', 'author_id': 370, 'author_profile': 'https://Stackoverflow.com/users/370', 'pm_score': 2, 'selected': False, 'text': '<p>Also try out <a href="http://www.visualsvn.com/" rel="nofollow noreferrer">visual svn</a> for your server if you want to avoid any command line work.</p>\n'}, {'answer_id': 5022, 'author': 'Adam Lerman', 'author_id': 673, 'author_profile': 'https://Stackoverflow.com/users/673', 'pm_score': 0, 'selected': False, 'text': '<p>If on a windows box a quick and dirty slution is CVSNT. Easy to use just set it up and works very well.</p>\n\n<p>I myself prefer SVN but this is a good one for quick use.</p>\n'}, {'answer_id': 10748, 'author': 'Nick Brosnahan', 'author_id': 528, 'author_profile': 'https://Stackoverflow.com/users/528', 'pm_score': 3, 'selected': False, 'text': "<p>I've used RCS, CVS, SCCS, SourceSafe, Vault, perforce, subversion, and git.</p>\n\n<p>I've evaluated BitKeeper, Dimensions, arch, bazaar, svk, ClearCase, PVCS, and Synergy.</p>\n\n<p>If I had to start a new repository today, I'd choose <strong>git</strong>.  Hands down.</p>\n\n<p>It's free, fast, and under active development.</p>\n\n<p>And you can use it as a client of any subversion repository using git-svn.</p>\n\n<p>It rocks.</p>\n"}, {'answer_id': 10774, 'author': 'Orion Edwards', 'author_id': 234, 'author_profile': 'https://Stackoverflow.com/users/234', 'pm_score': 3, 'selected': False, 'text': "<blockquote>\n  <p>@superjoe30</p>\n  \n  <p>What about using source control on your own computer, if you're the sole programmer? Is this good practice? Are there related tips or tricks?</p>\n</blockquote>\n\n<p>I find git is actually easier for this as you don't need a server or worry about entering URL's and so on. Your version-control stuff just lives in the <code>.git</code> directory inside your project and you just go ahead and use it.</p>\n\n<p>5 second intro (assuming you have installed it)</p>\n\n<pre><code>cd myproject\ngit init\ngit add * # add all the files\ngit commit\n</code></pre>\n\n<p>Next time you do some changes</p>\n\n<pre><code>git add newfile1 newfile2 # if you've made any new files since last time\ngit commit -a\n</code></pre>\n\n<p>As long as you're doing that, git has your back. If you mess up, your code is safe in the nice git repository. It's awesome</p>\n\n<ul>\n<li>Note: You may find getting things OUT of git a bit harder than getting them in, but it's far more preferable to have that problem than to not have the files at all!</li>\n</ul>\n"}, {'answer_id': 10788, 'author': 'John Smithers', 'author_id': 1069, 'author_profile': 'https://Stackoverflow.com/users/1069', 'pm_score': 4, 'selected': False, 'text': '<p>If you are new to versioncontrol read this:<br>\n<a href="http://www.ericsink.com/scm/source_control.html" rel="nofollow noreferrer">Source Control HOWTO</a></p>\n'}, {'answer_id': 13455, 'author': 'Brad Gilbert', 'author_id': 1337, 'author_profile': 'https://Stackoverflow.com/users/1337', 'pm_score': 0, 'selected': False, 'text': '<p>I would definitely choose SVN over CVS, if only because people who learned source control using CVS, tend to use "<code>svn delete</code>" then "<code>svn add</code>" instead of "<code>svn move</code>". Which makes it harder to find all of the previous revisions of a specific file. And you can always upgrade to using git-svn. I personally think it is easier to learn than hg, but really the <strong>main</strong> reason to use SVN is it has largely become the de-facto version control system of Open Source Software.</p>\n\n<p>If you ever plan on learning / using <a href="http://www.digitalmars.com/d/" rel="nofollow noreferrer">D</a> it is almost mandatory to access the third party repositories, like <a href="http://dsource.org" rel="nofollow noreferrer">DSource</a>.</p>\n'}, {'answer_id': 14316, 'author': 'Anders Sandvig', 'author_id': 1709, 'author_profile': 'https://Stackoverflow.com/users/1709', 'pm_score': 0, 'selected': False, 'text': '<p>@superjoe30 Yes, absoluteley. Once you start using version control you never go back. I use it for everything, even my "home" folder.</p>\n\n<p>@Orion Edwards Subversion does not require a server. You can access a local repository directly (via a client, of course), and there is no server process involved.</p>\n'}, {'answer_id': 14729, 'author': 'ansgri', 'author_id': 1764, 'author_profile': 'https://Stackoverflow.com/users/1764', 'pm_score': 0, 'selected': False, 'text': "<p>Just use TortoiseSVN, and you can live even without knowing actual Subversion commands... But that's bad. Luckily there will always be a “great opportunity” to learn them by heart — when your priceless repository first gets corrupted.</p>\n\n<p>Yes, it happens.</p>\n"}, {'answer_id': 23130, 'author': 'SarekOfVulcan', 'author_id': 2531, 'author_profile': 'https://Stackoverflow.com/users/2531', 'pm_score': 0, 'selected': False, 'text': "<p>As mentioned many times elsewhere, Just Do It. I was able to get started from scratch with Subversion under Windows in no time by reading the quick-start guide in the Red Book. Once I pointed TortoiseSVN at the repository, I was in business. It took me a while to get the finer points down, but they were minor humps to get over.</p>\n\n<p>I'd suggest installing the Subversion Service instead of using file:// URLs, but that's mostly personal preference. For a repository stored on your development machine, file:// works fine.</p>\n"}, {'answer_id': 23151, 'author': 'ryw', 'author_id': 2477, 'author_profile': 'https://Stackoverflow.com/users/2477', 'pm_score': 2, 'selected': False, 'text': '<p>Git is superior to subversion, but it\'s a little bit out on the bleeding edge.</p>\n\n<p>I\'d say, if you\'re just getting started, jump on the edge; setup a free account @ <a href="http://github.com" rel="nofollow noreferrer">http://github.com</a> </p>\n\n<p>They have educational material on site for setting up &amp; using git.</p>\n'}, {'answer_id': 23157, 'author': 'icco', 'author_id': 1063, 'author_profile': 'https://Stackoverflow.com/users/1063', 'pm_score': 1, 'selected': False, 'text': '<p>Use TortoiseSVN (version.app if on mac). Just install and go. If you need a place to host your code look at <a href="http://beanstalkapp.com/" rel="nofollow noreferrer">http://beanstalkapp.com/</a></p>\n'}, {'answer_id': 23158, 'author': 'jonezy', 'author_id': 2272, 'author_profile': 'https://Stackoverflow.com/users/2272', 'pm_score': 0, 'selected': False, 'text': '<p>From personal experience, svn would be my recommendation.  You can even use a service like <a href="http://beanstalkapp.com/" rel="nofollow noreferrer">Beanstalk</a> that offers free accounts (with limits obviously, but sufficient for any smallish project) to test the waters.  But as others have said, git is superior and is likely worth looking into.</p>\n'}, {'answer_id': 26150, 'author': 'Mike Caron', 'author_id': 2836, 'author_profile': 'https://Stackoverflow.com/users/2836', 'pm_score': -1, 'selected': False, 'text': "<p>Short answer: Subversion if you're the only one coding it or you're on site with everyone you work with. GIT if you're working with people in different sites and your code base is huge.</p>\n\n<p>Subversion is really, really easy to setup and get using. It is also nice because you can do relatively complicated things with it too, like hook it up to Apache and use SSL or plug it into Trac for project management. There's so many tools available for Subversion that it's really a good choice.</p>\n\n<p>GIT is much more useful for people who are on large teams working in a distributed environment. Linus T. developed it for the Linux team because he was unsatisfied with the capabilities of traditional repositories. Well worth learning if you ever plan to be working with people on open source projects.</p>\n"}, {'answer_id': 26164, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 1, 'selected': False, 'text': '<p>Coding Horror has a great post about <a href="https://blog.codinghorror.com/setting-up-subversion-on-windows/" rel="nofollow noreferrer">how to set up Subversion on Windows</a>.</p>\n\n<p>Following the tutorial, I was able to get Subervsion and TortoiseSVN running locally, and I got the education I needed out of it.</p>\n\n<p>As far as Git goes, it\'s probably a good idea to do a hands on experiment with both of them, to understand which fits your specific development practice.</p>\n'}, {'answer_id': 36095, 'author': 'Hershi', 'author_id': 1596, 'author_profile': 'https://Stackoverflow.com/users/1596', 'pm_score': 0, 'selected': False, 'text': '<p>One major tip to ease the setup of an SVN server right now is to use a Virtual Appliance. That is, a virtual machine that has subversion pre-installed and (mostly) pre-configured on it - pretty much a plug &amp; play thing. You can try <a href="http://www.vmware.com/appliances/directory/519" rel="nofollow noreferrer">here</a>, <a href="http://www.ytechie.com/svn-vm" rel="nofollow noreferrer">here</a> and <a href="http://www.garghouti.co.uk/vmTrac/" rel="nofollow noreferrer">here</a>, or just try searching Google on "subversion virtual appliance".</p>\n'}, {'answer_id': 39101, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 0, 'selected': False, 'text': '<p>I started to use subversion after reading Wil Shipleys blog.</p>\n\n<p>So I started checking in code, one machine and dreamhost account.  Then after I accidentally deleted a function and saved my project I knew I was in deep "dudu", but with subversion I just checked out the latest version of that file and it was like nothing happened.</p>\n\n<p>I use version control for everything now.  I am planning on moving over to git because it is faster, works offline, takes less space and oh boy is it faster.</p>\n'}, {'answer_id': 119453, 'author': 'Srikanth131', 'author_id': 4732, 'author_profile': 'https://Stackoverflow.com/users/4732', 'pm_score': 1, 'selected': False, 'text': '<p>SubVersion is the best Choice for you , As Karl Seguin pointed out Moving to Another Versioning System would not be a problem. also SVN has very goof Easy to use GUIs in the Client Side  (TortoiseSVN). </p>\n\n<p><a href="http://www.snee.com/bobdc.blog/2007/08/getting_started_with_subversio.html" rel="nofollow noreferrer">http://www.snee.com/bobdc.blog/2007/08/getting_started_with_subversio.html</a>\n<a href="http://dojo.jot.com/WikiHome/Getting%20Started%20With%20Subversion" rel="nofollow noreferrer">http://dojo.jot.com/WikiHome/Getting%20Started%20With%20Subversion</a></p>\n'}, {'answer_id': 119909, 'author': 's3v1', 'author_id': 17554, 'author_profile': 'https://Stackoverflow.com/users/17554', 'pm_score': 1, 'selected': False, 'text': '<p>If you choose to go with subversion and you want to host your own svn server, then there is a very nice and easy windows based server called VisualSVN server. It hides the complexity of setting up an apache server, you basically just go next next next.\nUser configuration is handled with a webUI, instead of a config</p>\n\n<p><a href="http://www.visualsvn.com/server/" rel="nofollow noreferrer">http://www.visualsvn.com/server/</a></p>\n\n<p>using a public serve rlike beanstalk is probably easier, but some people like to have their own repositories, either for speed or security</p>\n'}, {'answer_id': 120052, 'author': 'Sam Stokes', 'author_id': 20131, 'author_profile': 'https://Stackoverflow.com/users/20131', 'pm_score': 3, 'selected': False, 'text': '<p>From my own experience with it, I wouldn\'t recommend git as an introduction to version control.  I\'ve been using it for a couple of months now, and my impression is that it\'s very powerful and - now that I\'ve partially got my head around it - reasonably intuitive.  However, the learning curve is very steep, even though I\'ve been using version control for years.  It also suffers from being too expressive - it supports many different workflows and development models, but the only guidance on "the best" way to use it is a few pages deep in a Google search, which also makes it tricky for a newcomer to pick up.</p>\n\n<p>That said, it\'s possible that starting from a blank slate with git might actually be easier - my VCS experience is all with centralised version control (CVS, SVN, Perforce...) and part of my (ongoing!) difficulty with git has been understanding the implications of the distributed model.  I did glance briefly at other DVCSes like Bazaar and Mercurial and they seemed to be somewhat more newbie-friendly.</p>\n\n<p>Anyway, as others have said, Subversion is probably the easiest way to get used to the version control mindset and get practical experience of the benefits of VCS (rollback, branches, collaborative development, easier code review, etc).</p>\n\n<p>Oh, and don\'t start with CVS.  It\'s still in practical use, and has advantages, but IMHO it has too many historical quirks and implementation problems (non-atomic commits!) to be a good way to learn.</p>\n'}, {'answer_id': 435336, 'author': 'Andy Dent', 'author_id': 53870, 'author_profile': 'https://Stackoverflow.com/users/53870', 'pm_score': 0, 'selected': False, 'text': '<p>An important reason to use svn rather than cvs is svn supports binary diffs. That may not matter to many programmers but if you are making a series of minor changes in a 10Mb image, having a unique copy each time in your repository can chew up space remarkably quickly.</p>\n\n<p>I use TortoiseSVN on Windows but on the Mac have gone for the commercial <a href="http://www.zennaware.com/cornerstone/" rel="nofollow noreferrer">CornerStone</a> client over the (now commercial) Versions client. I found the range of free Mac clients, including RapidSVN, had enough pain points to bug me into shelling out real dollars. The safety-net that CornerStone provides for catching files I forgot to add to repository is worth the dollars to me. I spend a lot of time collaborating with a US client who is in an opposite time zone so can\'t afford screwups forgetting to add files!</p>\n'}]
['https://Stackoverflow.com/questions/2658', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/406/']