[plt-dev] VCS poll

From: Eli Barzilay (eli at barzilay.org)
Date: Wed Feb 17 23:26:28 EST 2010

In the past two weeks or so I've read about git, and after the initial
dislike (lots of blunt anti-svn propaganda, which was effective in
keeping me away) I liked the idea of switching to it.  Some related
points are below, but I'd like to only have a quick poll at this
stage, so no need to start a my-choice-is-better-than-your-choice
flamewar.  Please reply to me with answers to these questions:

* On a scale of -10 to +10, how much do you want to switch to a
  distributed system?  (-10 => I really want to stay with svn;
  +10 => I really want to switch; 0 => don't care.)

* What are your preferences for a distributed system?  List them in
  decreasing order of preference, or nothing if you don't care.
  (Considering everything you know about the tool: some central hub
  that uses it (like github or launchpad or whatever) and how well it
  is managed, or lack of one, availability of tools on misc platforms
  and how easy/hard it is to compile it, documentation of all kinds,
  etc etc.)

* On a scale of 0 to 10, how concrete+technical are your reasons for
  having the above preference?  (roughly, 0 => I asked my cat to
  choose for me; 1 => it's popular; 2 => I used it once and liked it;
  5 => I used it much and liked it; 8 => I know enough to make a well
  informed choice and can write a page describing the advantages;
  10 => I have used a number of systems and know exactly how they
  work, and I'm very familiar with the plt workflow and why it fits my
  choice, if you disagree I will flame you with excruciatingly long
  emails listing all of the mistakes you're about to make.)

The related points:

* This is just a rough poll.  I might summarize the results later or
  maybe not.  I might give higher weights for people who actively
  commit, etc.

* I did read about git only, just because it seems to be the mosty
  popular, and among other things I'm trying to figure out if there's
  some glorious points elsewhere that I'm missing.

* There are various motivations for considering a switch: the obvious
  global shift in hacker preferences, the obvious advantages of a
  distributed system, and the famous subversion bug that is still open
  for almost 2 years

* I know that some people would prefer sticking with svn only because
  that's what they know.  I think that with any of these systems it
  would be easy to come with a quick cheat-sheet for using a
  distributed system as if it's svn -- at least for a simple popular

* Converting the repository looks like it won't be hard (I've tried
  git-svn), but it's likely that branch histories will be lost.  (With
  what I've seen, it's possible to do that with git-svn only if there
  is a uniform place for branches, and we have both `branches/user/x'
  and `branches/x'.)  I don't think that this is a big problem, since
  svn makes it pretty hard to find that history anyway, so I doubt
  that anyone is using it.

* There's a some bunch of code that will need to be readjusted.
  Almost all of it is obviously my stuff, but a few other places too.
  Specifically, drdr will need to adapt a little.  (I've asked a
  friend who uses some dvcs (not git) in a company, and I think that
  the main difference is when should the tree be considered stable:
  with svn that should be on every commit, but with a dvcs that should
  be on every push (of a bunch of commits).  (obviously, if you use a
  dvcs as if it's svn and push every commit, then there's no
  difference for you.))

* Pretty much the only slight problem that I've seen is that git
  doesn't have the same concept of properties.  There are git
  attributes (which you store in ".gitattribute" files), but they're
  kept in a separate file rather than being attached to the file, and
  they're geared towards configuration values rather than allowing
  full files.

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.