bzr - The Bazaar source revision control system

Post on 01-Sep-2014

3.751 views 1 download

Tags:

description

Slides of my talk about Bazaar at phpDay in Verona, Italy: http://www.phpday.it/site/phpday-2009/calendario-conferenze/canale-developers/bzr-the-bazaar-source-revision-control-system/

Transcript of bzr - The Bazaar source revision control system

bzr - The Bazaar source revision bzr - The Bazaar source revision control systemcontrol system

Lenz GrimmerLenz Grimmer

<<lenz@grimmer.com>>

Agenda

● Introduction to DVCS● Features of Bazaar● Terminology● Workflows, Commands, Examples● Related Tools / Links

DVCS: Concepts

● No central instance● Every branch a full copy (incl. History)● Disconnected operation● Easy to create new branches● Merging of revisions from other repos● Multi-Protocol support (http, SSH, SMTP,

local filesystem)

DVCS: Benefits

● Empowering developers: local commits

● Encourage experimenting● Easy collaboration: sharing and

merging● Patches don't bit-rot

DVCS: Benefits (2)

● Parallel development of new features

● Maintaining/tracking local modifications

● Faster: local operations vs. Network● Every branch is a full backup

Bazaar: Features

● http://bazaar-vcs.org/● Multi-platform (Python)● Ease of use:

5 commands to get started● Command Aliases

(builtin & user-defined)● Well-documented● Commandline help

Bazaar: Features (2)

● Centralized and decentralized workflows● Shared repositories to save space● No clutter: one single .bzr directory● Various transport protocols (ssh, http, sftp,

ftp, smtp)● Extensive test suite included

Bazaar: Features (3)

● Smart merging● Renamed files and directories retain

history● Supports other VCSs (svn, hg, git)● Hooks and Scripts● Plugins (e.g. GUI extensions)● Unicode file names● Many 3rd-Party tools

Launchpad

● http://launchpad.net/● Project / code hosting● Mailing lists / Answers (FAQs)● Bug tracking / Blueprints● Translations● Tight integration with Bazaar

Bazaar: Terminology

● Revision● Snapshot of a tree of files/directories● Includes Metadata (date, author, comment,

parent revisions)● Can be exported

● Working Tree● Version-controlled directory● Contains editable files and directories

Bazaar: Terminology (cont.)

● Branch● An ordered series of revisions● Can be split (cloned) and merged back together● Checkouts

● Repository● A store of revisions● Default: one repository/branch● Shared repositories to save space and improve

performance

General Syntax

bzr [global opts] command [opts] [args]

Getting Help

bzr help <command>bzr help commandsbzr help topics

Solo Workflow

● Create project● Commit changes● Review/browse

history● Package release● Apply new changes● Rinse & Repeat

Initializing a Repository

bzr init <directory>

Adding/Modifying Files

bzr add <files>bzr diff <files>

Commiting Changes

bzr commit <files>bzr gcommitbzr qcommit

Looking at revision history

bzr logbzr diff

bzr visualize

bzr visualize

Screenshot: bzr gannotate

Pair programming

Create repository

Branch

HackHackCommitPull and merge

Commit

Developer A Developer BPush, pull, merge

Branching

bzr branch FROM TO

Publishing changes

bzr pushbzr send

Retrieving updates

bzr pullbzr merge

bzr missing

Centralized Workflow

CheckoutUpdate/Merge

CheckoutCentral repository

Commit

Developer A

Developer B

Commit

Code deployment

Upstreamproject

Live site

Branch Hack

Commit

MergePush

Upstream project Local deployment

Central Branch & Gatekeer

Central repository Gatekeeper

Developer A Developer B

Branch, Merge,Pull

Edit, Commit,Push

Merge, ReviewPush

Edit, Commit,Push

Related tools / Links

● Project Home Page: http://bazaar-vcs.org/● LaunchPad: https://launchpad.net● #bzr on irc.freenode.net● Planet Bazaar: http://planet.bazaar-vcs.org/● BundleBuggy:

http://code.aaronbentley.com/bundlebuggy/● PQM (Patch Queue Management):

https://launchpad.net/pqm

Q & A

Questions, Comments?

Thank you!

Lenz Grimmer <lenz@grimmer.com>http://www.lenzg.net/

bzr vs. git (biased)

● http://bazaar-vcs.org/BzrVsGit● Native Windows support and installer● Direct support for more workflows● Directories are branches, shared repositories● Simpler revision objects● No automatic merge & commit● User-friendly UI, familiar commands● Better asynchronous sharing using merge

directives