2. Why Bazaar?
• Lightweight and simple
• Python based thus x-platform
• Plugin architecture
• No dependancy on a centralised repo
• Copies of revisions locally and remotely
• Allows commits locally when offline
3. Set-up a versioned dir
$ cd ~/bazaar
$ bzr init demo
~/bazaar/demo is now set-up to be versioned
4. Let’s add a file
$ cd ~/bazaar/demo
$ vim test.css
$ bzr add
5. Let’s add a file
$ cd ~/bazaar/demo
$ vim test.css
$ bzr add
added test.css
8. Publish
Simply copy the directory to a webserver
Other people can take a branch by running:
$ bzr branch http://server.co.uk/branch/dir/
For read write share via SFTP.
9. Useful commands
bzr checkout - checks out branches.
bzr update - update the local files to match those in the repo.
bzr revert - reverts files back to a specific rev
bzr status - current status of modified, added and removed files
bzr log - the log of commits
bzr ignore - allows patterns of files to ignore .DS_Store!!
bzr uncommit - reverse a commit
bzr diff - provides a diff of revisions
10. Shared Repository
$ cd ~/bazaar/
$ bzr init-repo --no-trees sftp://server/path/to/
bzr/
$ bzr init sftp://server/path/to/bzr/bigmuffin
$ bzr checkout sftp://server/path/to/bzr/bigmuffin
remote
note: --no-trees prevents trees being created on
the remote repo.
12. Conflicts
A conflict is created when the merging algorithm cannot
make sense of the changes.
Should a conflict occur you will end up with several files
being created.
If the file with a conflict is style.css you will end up with:
styles.css
styles.css.BASE - The common base
styles.css.OTHER - The branch
styles.css.THIS - Your changes.
13. Resolving Conflicts
Compare styles.css.OTHER and
styles.css.THIS and manually rectify the
differences.
The merged file needs to be called styles.css
Make sure you delete styles.css.THIS
Then run:
$ bzr resolve file
14. Resolving Conflicts
Bazaar will automatically delete the other files
Macs have a really nice diff app for this which is included
with xcode.
It’s called FileMerge.
15. Branching & Merging
$ cd ~/bazaar/
$ bzr branch sftp://server/path/to/bzr/bigmuffin sftp://
server/path/to/bzr/myamazingfeature
$ bzr checkout sftp://server/path/to/bzr/
myamazingfeature amazingfeature
$ cd amazingfeature
$ cd ~/bazaar/bigmuffin
$ bzr merge ../amazingfeature
16. Plugins
Bazaar Email - a nice plugin that simply sends diffs of
commits to an email address of your choice.
Publish-bot - sends commit messages to irc
Commit selector - allows you to choose what files
you commit.
17. Points of interest
Mozilla took a look at bazaar for version control and
compared it with mecurial (http://www.selenic.com/
mercurial/wiki/) another Python based decentralised
VCS.
Their issue with bazaar was mainly around speed
but...
All of the points of speed have been a focus of the
Bazaar team since then and as a result subsequent
versions have increased dramtically in performance.
18. Points of interest
Bazaar is a canonical project the people behind
Ubuntu.
Launchpad.net is Canonical’s sourceforge. As a result
it’s file hosting is built around bazaar. Though a little
rough around the edges it shows promise.