SVN
SVN is a Sub-Versioning system.....it may seem over confusing.....
Yet really it is a very handy tool for development, as it can show you which files you've been editing and keep a permanent record of all changes..
The point that gets confusing is that you need to have a good method of working within it to begin, as to then not make mistakes later..
If you work from the web directory on your home server, it may save time, yet it also leaves messy files that you might need and might not..
If you have a permanent SVN send copy and then work on the web server separately, when something goes wrong, you only need to go to your home SVN copy and compare it with the working copy and not start replacing all changes that might have also been made...This also make it easier to compare for not needed files that might start cluttering, if you use the built in ignore...
Though SVN clients have lots of tools to automate this process, it's the automation of your work flow, which makes it streamlined...
There has been so many times where on my home server everything looks OK and then Oops there something completely wrong and since the SVN copy hasn't been overwritten by the working copy, it makes it easier to quickly replace the file and then fix it before even attempting committing it for the public..
That's my method and maybe people have found it easier to use all the SVN clients built in tools, yet it's all a learning curve and since there are so many other things too learn, you don't have years to mess around ruining the live copy, whilst working it all out.