7
Bazaar is a tool for helping people collaborate. It tracks the changes
8
that you and other people make to a group of files - such as software
9
source code - to give you snapshots of each stage of their evolution.
10
Using that information, Bazaar can effortlessly merge your work with
13
Tools like Bazaar are called version control systems (VCS) and have
14
long been popular with software developers. Bazaar's ease of use,
15
flexibility and simple setup make it ideal not only for software
16
developers but also for other groups who work together on files and
17
documents, such as technical writers, web designers and translators.
19
This guide takes you through installing Bazaar and how to use it,
20
whether on your own or with a team of other people. If you're already
21
familiar with distributed version control and want to dive straight in,
22
you may wish to skim this section and jump straight to
7
Bazaar is a tool for helping people collaborate together. It does this by
8
tracking how a group of files evolves and using that information to help
9
people merge their changes together as safely as possible.
11
In general, tools that do this are known as revision control systems or
12
version control systems (VCS). In the past, VCS tools have been popular
13
with software developers. In the future, VCS tools will undoubtedly also be
14
important for other groups of people looking to collaborate together on
15
files and documents, e.g. technical writers and translators.
25
17
A brief history of version control systems
26
18
------------------------------------------
28
Version control tools have been evolving for several decades now. In
29
simple terms, there have been 4 generations of tools:
20
VCS tools have been evolving for several decades now. In simple terms,
21
there have been 5 generations of tools:
31
1. file versioning tools, e.g. SCCS, RCS
32
2. tree versioning tools - central style, e.g. CVS
33
3. tree versioning tools - central style, take two, e.g. Subversion
34
4. tree versioning tools - distributed style, e.g. Bazaar.
23
1. file versioning tools, e.g. SCCS, VCS
24
2. tree versioning tools - central style, e.g. CVS
25
3. tree versioning tools - central style, done right, e.g. Subversion
26
4. tree versioning tools - distributed style, e.g. Arch
27
5. tree versioning tools - distributed style, done right, e.g. Bazaar.
36
29
The design and implementation of Bazaar builds on the lessons learned
37
30
from all the previous generations of tools. In particular, Bazaar
38
31
cleanly supports both the central and the distributed version
39
control models so you can change models as it makes sense, without
40
needing to change tools.
42
34
Central vs distributed VCS
43
35
--------------------------
47
39
users need to connect to the server and *checkout* the files. This gives
48
40
them a directory or *working tree* in which a person can make changes.
49
41
To record or *commit* these changes, the user needs access to the central
50
server and they need to ensure they have merged their work with the latest
42
server and they need to unsure they have merged their work with the latest
51
43
version stored before trying to commit. This approach is known as the
54
46
The centralized model has proven useful over time but it can have some notable
55
47
drawbacks. Firstly, a centralized VCS requires that one is able to connect
56
48
to the server whenever one wants to do version control work. Secondly, the
57
centralized model tightly links the act of **snapshotting** changes with the act
58
of **publishing** those changes. This can be good in some circumstances but
59
it has a negative influence on quality in others.
49
centralized model tightly links the act of snapshotting changes with the act
50
of publishing those changes. This can have a negative influence on quality.
61
Distributed VCS tools let users and teams have multiple repositories
62
rather than just a single central one. In Bazaar's case, the history is
52
Decentralized VCS tools let users and teams have multiple repositories
53
rather than just one central one. In Bazaar's case, the history is
63
54
normally kept in the same place as the code that is being version controlled.
64
55
This allows the user to commit their changes whenever it makes sense, even
65
56
when offline. Network access is only required when publishing changes or
66
57
when accessing changes in another location.
68
In fact, using distributed VCS tools wisely can have advantages well
69
beyond the obvious one of disconnected operations for developers.
70
Other advantages include:
72
* easier for developers to create experimental branches
73
* easier ad-hoc collaboration with peers
74
* less time required on mechanical tasks - more time for creativity
76
* increased release management flexibility through the use of
77
"feature-wide" commits
79
* trunk quality and stability can be kept higher, making everyone's
82
* in open source communities:
84
* easier for non-core developers to create and maintain changes
86
* easier for core developers to work with non-core developers and
87
move them into the core
89
* in companies, easier to work with distributed and outsourced teams.
91
For a detailed look at the advantages of distributed VCS tools over
92
centralized VCS tools, see http://bazaar-vcs.org/BzrWhy.
59
For a detailed look at the advantages of decentralized VCS tools over
60
centralized VCS tools, see http://bazaar-vcs.org/BzrWhy. In a nutshell,
61
it comes down to this: distributed VCS tools make effective collaboration
62
easier, saving effort and increasing quality along the way.
95
65
Key features of Bazaar
98
68
While Bazaar is not the only distributed VCS tool around, it does have some
99
69
notable features that make it an excellent choice for many teams and
100
communities. A summary of these and comparisons with other VCS tools
101
can be found on the Bazaar Wiki, http://bazaar-vcs.org.
103
Of the many features, one in particular is worth highlighting:
104
Bazaar is completely free software written in Python. As a result,
105
it is easy to contribute improvements. If you wish to get involved,
106
please see http://bazaar-vcs.org/BzrSupport.
70
communities. These include:
72
* it **Just Works** - a high focus on usability and performance
73
* **adaptive** - cleanly supports many different ways of working together
74
* **intelligent merging** that lets you collaborate without fear
75
* **truly portable** across many operating systems including Windows
76
* **renaming** of files and directories is properly supported
77
* **safe with your data** - integrity is checked using cryptographic
78
techniques and all changes can be digitally signed if required
79
* **low administration**, e.g. automatic packing of repositories
80
* **efficiently stores data** across branches in a flexible and safe way
81
* an **open architecture and API** that makes it easy to integrate
83
* a **large number of plugins** including bzr-svn and GUI front-ends
84
* **excellent integration** with a range of companion tools and services
85
including PQM, Bundle Buggy and Launchpad
86
* **completely open source**
87
* **commercial training and support** available from Canonical,
88
the company that sponsors Ubuntu.
90
While all of these are important, perhaps the greatest asset Bazaar has is
91
an active and growing open source community behind it. Bazaar is completely
92
free software written in Python so it is easy to contribute improvements.
93
Our collective goal is to build and support a distributed VCS tool that
94
developers love to use, a tool that helps them get their job done without
95
getting in their way. If you wish to get involved, please see
96
http://bazaar-vcs.org/Community.
112
102
This manual provides an easy to read introduction to Bazaar and how to use
113
it effectively. It is recommended that all users read at least the rest of
116
* explains the core concepts users need to know
117
* introduces some popular ways of using Bazaar to collaborate.
119
Chapters 2-6 provide a closer look at how to use Bazaar to complete
120
various tasks. It is recommended that most users read these in first-to-last
121
order shortly after starting to use Bazaar. Chapter 7 and beyond provide
122
additional information that helps you make the most of Bazaar once the core
123
functionality is understood. This material can be read when required and in
126
If you are already familiar with other version control tools,
127
you may wish to get started quickly by reading the following documents:
129
* `Bazaar in five minutes`_ - a mini-tutorial
131
* `Bazaar Quick Start Card`_ - a one page summary of commonly used commands.
133
In addition, the online help and `Bazaar User Reference`_ provide all the
134
details on the commands and options available.
103
it effectively. If you are already familar with other version control tools,
104
you may wish to get started with Bazaar more quickly by reading the
105
following documents initially instead:
107
* `Bazaar in five minutes`_ - a mini-tutorial
109
* `Bazaar Quick Start Summary`_ - a one page summary of commonly used commands.
111
The online help and `Bazaar User Reference`_ are also particularly useful as
112
they provide all the gory details on the commands and options available.
136
114
.. _Bazaar in five minutes: ../mini-tutorial/index.html
137
.. _Bazaar Quick Start Card: ../quick-reference/index.html
138
.. _Bazaar User Reference: ../user-reference/index.html
115
.. _Bazaar Quick Start Summary: ../quick-reference/quick-start-summary.svg
116
.. _Bazaar User Reference: ../user-reference/bzr_man.html
118
Either way, it is recommended that all users read the rest of this chapter
121
* explains the core concepts users need to know
122
* introduces some popular ways of using Bazaar to collaborate.
124
Remaining chapters provide a closer look at how to use Bazaar to complete
125
various tasks together with details on implementing some recommended
140
128
We hope you find this manual useful. If you have suggestions on how it
141
129
or the rest of Bazaar's documentation can be improved, please contact