Many years ago I used a development tool that kept a local cache of the project. Common enough still today, but in that case it was in an opaque binary form and so when it got corrupted there wasn’t much choice but to throw away all your recent work and start again with a fresh copy from the central shared repository. You both lost the work that you had done and wasted time getting the the local cache consistent with the shared repository.
I had the same experience this morning with Force.com. The “opaque binary form” in this case was the meta-data that resides solely in the Force.com org. I deleted some (heavily referenced) classes and triggers by accident and then could not re-create them getting the error message “… name is already in use or has been previously used”. Dead in the water. Several hours of work were needed to create a new org, modify package prefixes, deploy, manually re-create the packaging and do some basic testing.
So bear in mind that while version control such as SVN provides some protection, the meta-data that resides in an org is a hidden part your project that you just have to hope will never get corrupted (or need branching or reverting). And the level of voting for these ideas sf:clean and sf:package suggests this is not going to change.