I apologize if this seems esoteric, but I have this problem and I know I can’t be the only one. I’m also curious about the tools used by other programmers out there.
CVS is a system used by people who write things like software or website source code. The Old Ways, before CSV, called for you just keeping a big heap of files on your computer, changing them as needed. Hopefully you keep backups. If you and another person both need to work on those files, then you send them a copy and the two of you have to be careful not to overwrite each other’s changes. Making a change to file F can cause problems in file Z, and so keeping track of who is working on what becomes a major part of your work.
And if there are ten of you? And you’re working one a vast collection of hundreds or even thousands of files? And everyone is constantly making many small changes to many files? Well… sending your changes to the other involved parties is no longer a solution to the problem. (This is one of the reasons that it’s so tough to scale a software project upwards. Doubling the number of coders on a project will more than double the complexity of managing all of those people. This is true of lots of kinds of work, but I’ve found it to be particularly true when dealing with source code.)
CVS helps with this. All of those files reside on a server somewhere. You can “check out” a particular file like checking a book out of the library. You make your changes. Then you submit all of your changes back to the codebase. Anytime you like, you can synch to the codebase and get all of the changes everyone else has made. The software keeps a record of all of the changes made by everyone. So if I run the latest version of the software and find out that someone removed the ability to invert the mouse y-axis in first-person view, I can look in the revision history and see every change made to that file. I can determine that Bob took that feature out, and I can then hire a group of goons to beat him to death send him a polite email letting him know about his mistake.
CVS lets you see all the code, anywhere you have access, at any point in history. No matter where you go, all you need is your CVS login and you can get the source code and you’re ready to rock*. You can go back to the source code everyone was using on May 23, 2006 at three in the afternoon, if you really need to.
* And by “rock”, I mean, “Sit hunched over a laptop in the airport with your cellphone clamped between your ear and shoulder, trying to figure out who in the hell messed up the order processing code two days before the Christmas holiday. What is wrong with these idiots? No, wait… I see. Looks like it’s actually a problem with credit card processing. No… It’s a problem with a change made to the authentication system. Made by me. Yesterday afternoon. Look, I’ll call you back.
Anyway, at my day job we have a system of source control, but I can’t very well use that for my various hobby projects. I decided I wanted to use CVS for my projects, not just for the version control, but also because it also makes a nice off-site backup. I was sort of astounded when there didn’t seem to be a solution for people in my position. There are commercial services aimed at large companies that want preposterous sums of money.
Given their Swiss-army-knife approach to features, this seems like an ideal job for web hosts. But only a fraction of them offer CVS, and those that do offer it via an arcane system where you telnet in and interact with (I assume) a Linux shell. Making a robust system and then building the interface around typing stuff into a console is like making a Wii that saves your game to a stack of punchcards.
We’re talking about a couple hundred kilobytes of data, tops. Given the number of people doing WordPress themes, websites, and PHP code in their spare time, I can’t believe there isn’t a solution aimed at the general public.
Maybe I’m missing something. If you write code on your own time, what do you use to keep track of it?
T w e n t y S i d e d