Bazaar-NG - Distributed version control made fun 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---
11
12Having 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:
13
14```
15bzr init myproject
16cd myproject
17bzr init
18bzr add .
19bzr commit
20```
21
22You can then use the bzr+ssh protocol to push and pull this repository to other boxes:
23
24```
25bzr pull bzr+ssh://remoteserver/path/to/myproject
26cd myproject
27bzr co .
28```
29
30You 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:
31
32```
33cd myproject
34bzr add .
35bzr commit
36```
37
38Then you can push it back to the main server (or pull it in):
39
40```
41bzr push bzr+ssh://remoteserver/path/to/myproject
42```
43
44I'm sure that there is plenty of stuff I have missed - but it seems pretty good from my days worth of testing.
45
46
47