A friend of mine once showed me this popular article in which the author recommends putting "your life" into version control.

Since I've now set up a 24x7 server for my LAN and Subversion has been installed and configured, I'm contemplating the ability to do this. Right now I've got documents spread about on 2 different computers and it would be really nice to have everything in a central repository from which I can keep both computers up-to-date without a hassle.

I've started a simple repository for my documents and I've started to move documents into the repository from both computers. One thing I'm finding funny is that Subversion does not allow check outs of a single file. Subversion only allows you to check out entire directories. (i.e. if I only want to edit index.php I have no choice but to get local copies of every file in that directory as well).

Checkouts in Subversion are not "locking" mechanisms, a "checkout" is really just "go grab me a copy so that I can locally edit it". So checking out an entire directory does not lock anything on the repository side. (Subversion makes sure changes do not overwrite each other at the "commit" side)

Nonetheless, the inability of Subversion to checkout just a single file has some disadvantages from an enduser perspective because every user will have working copies of every single document in that directory on each computer as well as the central storage in the repository. This results in a giant waste of disk space and extremely long check out times. It also results in potentially long update times if a lot of users are editing a lot of files from multiple PCs.

It is possible to subsequently delete all other file I don't want to edit from my local copy, but every time I want to get my local copy up-to-date it will result in the long checkout time again. If I keep everything in my local copy subsequent updates/checkouts will only result in the delta files/changes that have occured since my last update.

Since I seem to have the disk space, and I intend to structure my repository into smaller subdirectory trees, it's not too much of a pain to check out the whole thing once (i.e. every file in the directory) and then keep working copies up to date on both PCs, but it was something that I found surprising about Subversion. It results in a different way of thinking, I guess.

Another thing that was slightly annoying is that there doesn't seem to be a compelling cross-platform GUI for Subversion yet. I did install TortoiseSVN for Windows which updates the Windows shell to allow Subversion commands. I really like TortoiseSVN, but it would be nice to have a plush Java GUI to work in the same fashion on both Linux and Windows boxes as well. I guess I'll have to wait until those projects are a little more stable.

§42 · February 14, 2005 · Software, Technology · · [Print]

Leave a Comment to “Subverting Your Life”

  1. Mauriat says:

    Write a blog entry about 6 months or so after you start doing this. I’d be interested in hearing how well you stuck with it.

  2. […] Way back in the day (wow nearly five years ago!), I made the transition of my personal documents into Subversion. Around about the time my central Subversion repository no longer became accessible to me I decided to investigate Mercurial as a new option. One thing that I like is that the repos are accessible over http, so it’s pretty easy to set up. […]