Saturday, February 9, 2008

bzr and bazaar - What delicious confusion

There are two packages very similarly named, bazaar & bzr. They are both for distributed version control system (dvcs). While work on bazaar has stopped upstream bzr is only just beginning. Its only through the description one comes to know that something is amiss.

shirish@Mugglewille:~$ aptitude show bazaar
Package: bazaar
New: yes
State: not installed
Version: 1.4.2-5.3
Priority: optional
Section: universe/devel
Maintainer: Ubuntu MOTU Developers
Uncompressed Size: 1405k
Depends: libc6 (>= 2.5-0ubuntu1), libgpgme11 (>= 1.0.1), libneon26-gnutls (>= 0.26.2), diff (>= 2.8.1), patch (>=
2.5.9), gawk
Suggests: openssh-client, bazaar-doc, gnupg
Description: arch-based distributed revision control system
GNU Arch is a revision control system with features that are ideal for projects characterised by widely
distributed development, concurrent support of multiple releases, and substantial amounts of development on
branches. It can be a replacement for CVS and corrects many mis-features of that system.

bazaar is an implementation of Arch in C, based on tla. It focuses on making tla's UI more accessible, but also
has smarter merging and gettext support.

Unless you have a pressing reason to use bazaar you should use some other revision control system as upstream
development has ceased.


shirish@Mugglewille:~$ aptitude show bzr
Package: bzr
State: installed
Automatically installed: no
Version: 1.0-1
Priority: optional
Section: devel
Maintainer: Ubuntu Core Developers
Uncompressed Size: 14.2M
Depends: libc6 (>= 2.7-1), python (<>= 2.4), python (> 2.5) | python-celementtree, python-central
(>= 0.5.8)
Recommends: bzrtools, python-paramiko
Suggests: bzr-gtk, bzr-svn, python-pycurl, xdg-utils
Description: easy to use distributed version control system
Bazaar is a distributed version control system designed to be easy to use and intuitive, able to adapt to many
workflows, reliable, and easily extendable.

Publishing of branches can be done over plain HTTP, that is, no special software is needed on the server to host
Bazaar branches. Branches can be pushed to the server via sftp (which most SSH instalations come with), FTP, or
over a custom and faster protocol if bzr is installed in the remote end.

Merging in Bazaar is easy, as the implementation is able to avoid many spurious conflicts, deals well with
repeated merges between branches, and is able to handle modifications to renamed files correctly.

Bazaar is written in Python, and has a flexible plugin interface which can be used to extend its functionality.
Many plugins exist, providing useful commands (bzrtools), graphical interfaces (bzr-gtk), or native interaction
with Subversion branches (bzr-svn).

Install python-paramiko if you are going to push branches to remote hosts with sftp, and python-pycurl if you'd
like for SSL certificates always to be verified.

Wanna see something really interesting, try doing , both as well resolve to the same domain Actually Canonical likes or has adopted the bazaar-vcs project and I do like it. Somebody please please tell me why its still there (esp. in Hardy?)


Jelmer said...

I like to think about Bazaar as a DVCS that has two incarnations: "baz", which was based on GNU arch and "bzr", which is written in Python and is still maintained. The core developers for "baz" and "bzr" are pretty much the same people.

The plan is to rename the current "bazaar" package to "baz" at some point and make the "bazaar" package a virtual package that depends on "bzr".

shirishag75 said...

That's just more confusion. There would be people who have just have started using bzr & again renaming it would just add more confusion.

Although I do know that essentially the same core developers are working on bzr.