(Sorry for using HN as a forum... can't think of anywhere else.)<p>Hi HN,<p>I never thought I'd need to use a version tracking system, but after having a live site, I'm thinking I do. (Single developer.)<p>Say I have a feature I need to implement, but would take days or weeks to finish it. In the meantime, I need to fix a bug which could take just a few minutes to fix and deploy. I'm finding myself making whole copies of my site on my local machine, and using the original copy change little things and deploy.<p>Would git/svn make this easier for me, or am I stuck doing what I'm doing? Thanks!
Yes. Try git or mercurial (AKA "hg": <a href="http://selenic.com/mercurial/" rel="nofollow">http://selenic.com/mercurial/</a>) rather than svn; both are much easier to set up and try out. When it only takes a second to set them up, you'll be more likely to experiment with them and discover what they're good at. SVN really doesn't have any real advantage over them these days.<p>There is a function in git and hg (an extension) called "shelve" which does exactly what you want - you can temporarily set aside the new feature in progress, commit the bugfix, and then go back to working on the feature. (If you knew <i>ahead of time</i> you were going to need to do this, it would probably have made more sense to do the feature in a branch, of course.)<p>People will argue back and forth whether git or hg is better, but in my experience they do the same things* , they just have different personalities. Pick one, get the hang of using it, and <i>then</i> experiment with the other - you'll be better able to make an informed decision. Both are significantly better than just about every other VC system.<p>* The advanced features they don't have in common are probably not going to matter until you know all the base functionality, and any new features in either will probably get ported to the other by then.
version control is almost always a good idea. If you're the only developer, then I would recommend svn. git is distributed version control -- its used e.g. for Linux Kernel development, when hundreds of developers are doing independent work on the same codebase.