Bazaar unsuitable for Emacs's ELPA branch

Stefan Monnier monnier at iro.umontreal.ca
Thu Aug 9 15:43:34 UTC 2012


We've been using Bzr for Emacs's source code for several years now, and
while we've had plenty of endless threads asking why we keep using it
instead of Git, it has served us acceptably (not super efficiently, but
not significantly worse than back in the CVS days).

A couple years ago we started setting up a new branch (called `elpa')
which holds Elisp packages that are not distributed with Emacs, but can
be easily installed via a package manager UI.

This branch should ideally be using something like "config-manager"
since it's really a combination of separate projects.  But we have it as
a Bzr branch because config-manager isn't good enough yet (e.g. isn't
able to handle removals).

Some of the projects it contains use this `elpa' branch as the canonical
source, while others store their canonical code elsewhere, which is then
treated as an upstream branch from which we merge "regularly".

In theory this should work OK, but in practice it is becoming clear it
can't be used:
- revision 171 bumped into a bug of Bzr which has something to do with
  rich-root.  So now you can't just "bzr co .../elpa" but need to do it
  in two steps: "bzr co -r170 .../elpa" and then "bzr update".
  For one of the public branches of the Emacs project, this is a major
  pain in the youknowwhat.
  This bug has been reported a long while ago but shows no sign of
  getting fixed.
- several of the externally maintained packages use Git, so we track
  them via "bzr-git".  But "bzr-git" always uses the same ID for the
  root node, so we can't just "bzr co .../foo.git foo; bzr join foo"
  since the ID used for `foo' is already used.  We end up having to play
  a little dance where we "bzr co .../foo.git foo" then "bzr mv"
  everything into a subdir, then "bzr split" this subdir and then "bzr
  join" the result into `elpa' (where the "move + split" ends up
  generating a new ID for the split tree's root, hence solving the
  problem).
  This makes it tricky to add new packages, and also makes tracking
  those packages more painful since merges report conflicts whenever the
  upstream has added/removed files.

For these reasons, we're looking at moving the `elpa' branch to some
other revision control.


        Stefan




More information about the bazaar mailing list