Bazaar VCS Lightning Talk

Preview:

DESCRIPTION

A brief introduction to the awesome Python based version control system

Citation preview

Bazaar Version Controlhttp://bazaar-vcs.org

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

Set-up a versioned dir$ cd ~/bazaar

$ bzr init demo

~/bazaar/demo is now set-up to be versioned

Let’s add a file$ cd ~/bazaar/demo

$ vim test.css

$ bzr add

Let’s add a file$ cd ~/bazaar/demo

$ vim test.css

$ bzr add

added test.css

First commit$ bzr commit -m “my first commit”

First commit$ bzr commit -m “my first commit”

added test.css

Committed revision 1.

PublishSimply 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.

Useful commandsbzr 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

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.

Adding and committing$ cp -R ~/projects/bigmuffin/* ~/bazaar/bigmuffin/

$ bzr add

$ bzr status

$ bzr commit -m “bigmuffin project files added”

ConflictsA 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.

Resolving ConflictsCompare 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

Resolving ConflictsBazaar will automatically delete the other files

Macs have a really nice diff app for this which is included with xcode.

It’s called FileMerge.

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

PluginsBazaar 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.

Points of interestMozilla 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.

Points of interestBazaar 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.

Easter Egg$ bzr rocks

Easter Egg$ bzr rocks

It sure does!

Recommended