Bazaar-NG - Distributed version control made fun Source
Markdown source
1---2title: 'Bazaar-NG - Distributed version control made fun'3date: '2007-09-27'4published_at: '2007-09-27T16:00:00.000+10:00'5tags: ['bazaar-ng', 'programming', 'python', 'version control']6author: 'Gavin Jackson'7excerpt: 'Having used various version control systems over the years (cvs, clearcase, subversion), I have noticed a recent shift to decentralised version control systems (I''ve only used darcs, but there are a w...'8updated_at: '2007-09-27T16:20:56.863+10:00'9legacy_url: 'http://www.gavinj.net/2007/09/bazaar-ng-distributed-version-control.html'10---1112Having used various version control systems over the years (cvs, clearcase, subversion), I have noticed a recent shift to decentralised version control systems (I've only used darcs, but there are a whole heap of others - git, mecurial, svk, bitkeeper). There is a lot of hype surrounding bazaar-ng ([http://bazaar-vcs.org/](http://bazaar-vcs.org/)), an open source distributed version control system written in Python, and supported by Canonical (the company behind the Ubuntu Linux distribution). Today I went through the bazaar tutorial and printed myself a compy of the "Bazaar quick start quide" ([http://bazaar-vcs.org/Documentation](http://bazaar-vcs.org/Documentation)) - it definitely feels like a polished piece of software, and it is extremely easy to get up and running (particularly for someone who is already familiar with svn and darcs). To install and run bazaar-ng (bzr), all you need is Python 2.4 or greater - which automagically makes it cross platform - no need for the glasgow haskall compiler! To add a new project to bazaar version control, it's as simple as:1314```15bzr init myproject16cd myproject17bzr init18bzr add .19bzr commit20```2122You can then use the bzr+ssh protocol to push and pull this repository to other boxes:2324```25bzr pull bzr+ssh://remoteserver/path/to/myproject26cd myproject27bzr co .28```2930You can then start modifying the tree - operations like rm and mv are all supported, you it feels like operating on a standard directory system (no need for fancy commands when creating of removing directories). After making your changes, you can record a revision:3132```33cd myproject34bzr add .35bzr commit36```3738Then you can push it back to the main server (or pull it in):3940```41bzr push bzr+ssh://remoteserver/path/to/myproject42```4344I'm sure that there is plenty of stuff I have missed - but it seems pretty good from my days worth of testing.454647