IMHO you're missing out on the benefits of version control. It's not just about "having a place to stuff previous versions", it's a lot about workflow as well. A bunch of backup zip files don't tell you very much about the state of the project, and makes it difficult to easily and quickly spot exactly what has changed between versions.
Working with a versioning system forces you into the habit of being more organized - instead of scattered changes across your entire project, you learn to apply focused changes to a handful of files, and then commit that changeset along with a meaningful commit log. It's makes it a lot
easier managing your projects in the long run, and a lot easier to track down exactly when that nasty regression bug was introduced.
If you work with a decent DVCS with cheap branching support, it also makes it a lot easier to work on feature branches. Currently working on adding some new feature that might take a couple of days to implement, when you realize there's a nasty bug you should really prioritize instead? Simple, make a new feature branch for the bugfix off your latest stable commit, fix the bug there and release - then return to your new-feature branch. Organized, without clutter, without the large risk of errors if you tried to handle this workflow manually.
while renaming files is something I do several times a day, esp. as I progressively get a better understanding of how my classes need to be designed and laid out.
Do a bit more of pre-planning
. It does happen I end up renaming a class, but it definitely isn't very often - not even newly started projects. Adding files happens a lot more often, but that's painless even in SVN.
t's nearly impossible in practice to match a stored state of the library with a stored state of a project. When I realized SVN wasn't helping with that at all, that was when I gave up on it entirely.
will help you with that, it requires solid engineering... keeping a decent level of abstraction where implementation changes doesn't affect the clients, and a lot of care and consideration when applying changes. It's not
easy, and even if you get it right it can be nearly impossible to go back and build an exact copy of a previous version (which can be necessary if you need to deal with bugs in older versions).