Version control for writers

Last night I made my 547th checkin in my fiction revision control repository. I know what you're thinking. You're thinking, "Huh?"

Using software to manage successive versions of the files in a project is a practice borrowed from software engineering, where it's essential. Any project worked on by more than one person will require it, and it's handy even for single-person projects. While solitary writers don't have the same need to track who changed what when and why that software projects do, version control software can do some useful stuff for us.

What the heck is it?

A computer somewhere runs the server part of the version control software. It stores a "repository" of all the files being managed. You can store anything in a version control system: text files, images, Word files, and so on. The server also does bookkeeping and keeps history on who changed a file when, what changed, and what notes they wrote about the change. You run client software that lets you easily snag a copy of everything in the repository on the computer you work on. You can also update your local copy with any recent changes made (by getting incremental changes, so you never have to download everything again).

Revision control software does other things that programmers working on group projects find useful (merging changes, if somebody edited the file you're working on while you worked, for instance), but the group aspects are less interesting to writers.

What a source repository gives me:

- Backup. Offsite backup, in my case. I check in, and I'm all backed up in case my Macbook spontaneously combusts. Easy backup is worth it all by itself.
- Easy access to earlier drafts. I can delete and rearrange at will, knowing that I can look back at how it was before if I change my mind.
- Easy synching between my laptop and my desktop. Check in, check out.
- Web-based browsing of story progress. It's fun to watch a story evolve through successive drafts.

There's a little bit of initial startup:
- Create a repository on whatever server you're using.
- Add existing files to the repository to be managed.
- "Check out" the repository wherever it is you want to work. That is, get a "working copy" of the files.

Once set up, your daily workflow looks like this:
- Make changes the way you usually would, to the files in your working copy.
- Periodically, "check in" or "commit" the changes to the repository.
- Add new files to the repository as you create them.
- If you're writing on more than one computer, periodically "update" your working copy to grab changes made from the other location.

This screencast introduction to subversion explains some more about how it works.


Programmers argue about version control software almost as fiercely as they argue about text editors. Ignore them, because you mostly don't need the features they get excited about. Realistically, you have two free choices: CVS and Subversion (aka svn). And again realistically, the world is abandoning cvs for svn, so you're probably going to use svn. There are other niche choices you can make, if you're an expert, but in that case you're not reading this introduction, are you?


The downside is that you need access to the software. Either you need to know how to set it up or have somebody run a repository for you. I happen to have a handy Linux server sitting in a colocation rack running my web site, so I was in business. If I didn't have the server elsewhere, I would have set it up on one of my home Linux boxes, or on my desktop Mac.

#1 choice would be to have a nerdy friend run a Subversion repository for you.

Or you could pay somebody to host it. Google tells me there are lots of options. looks good to me: $4/month for 500MB. CVS dude is $15 for 1 gig. (Overkill for writers.) will do it for $7, 100 MB (crappy!). Dreamhost will run a Subversion repository for you for $10 a month with their "level 1" hosting package. If you're already using them, you're in business for no extra $.

Client-side software

That's the server side. You'll also want something on the computer you write on.

TortoiseSVN is the graphical app to use if you're on Windows.

I use the command-line client on OS X, installed via DarwinPorts. You can also install the client from Coding Monkey's handy packages. You can also try a graphical client like ZigVersion (free for non-commercial use, which your fanfic use is). Or svnX (which I didn't like much, because to be honest I couldn't get it to work).

More clients are listed on the Subversion project's links page.

For me it was an easy thing to set up, because I keep all my personal programming projects in Subversion. So I'm already comfy with using the tools. You might have a bit more startup pain, and you might find that it's not the right thing for you to do. But please, have some kind of backup plan. Hard drives do die, though it's pretty rare these days, and sometimes people accidentally delete the wrong files. I don't want to be consoling you when you tell me that your 200K-word Giles epic has vanished, ya know? I want to be reading it!
  • Current Mood: geeky
  • Current Music: October : Chanal & Villuis : October - EP