by mlepage » Dec 31, 2003 @ 5:57am
First off, when I said I back up after a day's work, I didn't mean daily per se. If I work only half a day, then a quarter of a day, then another quarter of a day, I'll figure I've done a day of work (over three days) and make a backup. I'd do it more often except on Windows, the archiver balks if I try to back up while the open applications are playing with the files. (This is not a problem on Unix.) These are just backups to an archive on the same computer I work on.
Second, I do my backups onto another machine whenever I hit a milestone. These mini milestones are basically little releases I do to myself, where I write up a little release note of what's in the milestone, publish it to a few friends, back it up to another machine, etc. While I was working on my pinball-type project, I did about 8 mini milestones over 300hrs of work, which works out to about a backup per week of work. And if a milestone dragged on a bit, I did an adhoc backup to another machine whenever I got uncomfortable about the amount of code since the last backup.
When I start coding again (soon), I'll probably be more diligent as I'll be working 8hrs a day. I may look at automating this process somewhat. (Easier on Unix, harder on Windows with applications open. I don't like to screw with my desktop once I have all my windows arranged.) One thing I want to start doing is burning CDs of my code (less prone to harddrive failure), and putting them in the garage (closest off-site site).
In my professional past, I've used both Visual SourceSafe and CVS. I have indeed found Visual SourceSafe to munge projects now and then, but that was 5 years ago so maybe it is better these days. 1-4 years ago I used CVS professionally, it didn't seem to munge projects but some complained of weirdness now and then. We could never discover if it was actually CVS or just flaky clients.
So, as fzammetti hinted at, that's one reason I just do the ad-hoc backups manually. I know that I am in control of my assets. Basically, I have the discipline to keep detailed (enough) logs of what I do at any particular time; that covers the accounting aspect of it. I keep periodic snapshots of my entire project source tree in dated archives, which covers the history aspect of it. And I make periodic backups to another machine, which covers the backup aspect of it. I try to work these manual activities into other necessary tasks (e.g. bundling into a mini milestone release) to reduce the impact of them. Later I plan to burn to CD, and perhaps automate the process a little more, or just start using CVS or try Perforce.
So what I'm saying is that you need a solution that provides accounting/history/backups, even if that system isn't a source code control package. But I'm also saying that if you have never used a source code control package, you owe it to yourself to try one so you know if it is a good solution for you. (It probably is.)