Source control

by havoc

People keep acting like it’s nuts to use Subversion instead of git (or
one of the other long list of distributed alternatives), and I feel
like I’m just missing something or getting too old to understand the
kids today.

I found an old series of blog posts about how the different models
support different community dynamics,
Greg Hudson,
Ian Bicking,

Bryan O’Sullivan

I think what I don’t get yet is why you’d want to maintain a
bunch of local changesets for very long. The Linux-kernel-style
fork-fest seems just nuts for anything I’m working on. Usually there
are less than 10 people, often less than 5, that are really doing much
work, and any other contributors are sending a one-liner every few
months. There’s just no problem that I see here that
distributed version control would solve.

Maybe it’s a personal style issue. On all my projects I almost
compulsively commit to the central repo every day – too afraid of
losing work when a hard drive goes south or something. I know other
people who delay committing for months at a time which I would find
nerve-wracking. I also press save every 3 minutes whenever I’m editing
a document.

The obvious reply is that most people don’t have commit access. But if
someone’s doing any kind of significant work, I think they should. And
for my projects I’ve essentially always given out access as soon as
someone did any kind of largish patch or frequency of patches. Again,
a typical number of people doing work would be 3, 5, maybe 10 – 10
is a pretty large project by most open source project

Aside from community dynamic / “what is the point of
decentralization” two other things bug me:

  • There are so many choices (cvs, svn, git, mercurial, darcs, bazaar,
    arch, monotone, etc.). It used to be that if you understood CVS you could quickly
    work on any project. These days, if you want to work on a project you
    might have a few days of ramping up on the quirks of their SCM before
    you can do anything. And they are all quirky. And I just don’t care
    about SCM that much and don’t want to think about learning new ones.
  • The distributed systems seem pretty wild from a user experience
    standpoint. In the sense of “jeez, I can tell a (kernel, Haskell,
    shell) programmer wrote this.” Subversion may be less flexible but
    it’s also less confusing. Call me stupid.

Also, I used to walk to school both ways uphill in the snow, fyi.

(This post was originally found at

My Twitter account is @havocp.
Interested in becoming a better software developer? Sign up for my email list and I'll let you know when I write something new.