~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/en/user-guide/introducing_bazaar.txt

  • Committer: Vincent Ladeuil
  • Date: 2008-01-29 15:16:31 UTC
  • mto: (3206.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 3207.
  • Revision ID: v.ladeuil+lp@free.fr-20080129151631-vqjd13tb405mobx6
Fix two more leaking tmp dirs, by reworking TransformPreview lock handling.

* bzrlib/tests/test_transform.py:
(TestTransformMerge): Revert previous patch and cleanly call
preview.finalize now that we can.

* bzrlib/tests/test_merge.py:
(TestMerge.test_make_preview_transform): Catch TransformPreview
leak.

* bzrlib/builtins.py:
(cmd_merge._do_preview): Finalize the TransformPreview or the
limbodir will stay in /tmp.

* bzrlib/transform.py:
(TreeTransformBase.__init__): Create the _deletiondir since it's
reffered to by finalize.
(TreeTransformBase.finalize): Delete the dir only if _deletiondir
is set.
(TreeTransform.__init__): Use a temp var for deletiondir and set
the attribute after the base class __init__ has been called.
(TransformPreview.__init__): Read locks the tree since finalize
wants to unlock it (as suggested by Aaron).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Introducing Bazaar
 
2
==================
 
3
 
 
4
What is Bazaar?
 
5
---------------
 
6
 
 
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
 
11
other people's.
 
12
 
 
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.
 
18
 
 
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
 
23
`Learning more`_.
 
24
 
 
25
A brief history of version control systems
 
26
------------------------------------------
 
27
 
 
28
Version control tools have been evolving for several decades now. In
 
29
simple terms, there have been 5 generations of tools:
 
30
 
 
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, done right, e.g. Subversion
 
34
 4. tree versioning tools - distributed style, e.g. Arch
 
35
 5. tree versioning tools - distributed style, done right, e.g. Bazaar.
 
36
 
 
37
The design and implementation of Bazaar builds on the lessons learned
 
38
from all the previous generations of tools. In particular, Bazaar
 
39
cleanly supports both the central and the distributed version
 
40
control models so you can change models as it makes sense, without
 
41
needing to change tools.
 
42
 
 
43
Central vs distributed VCS
 
44
--------------------------
 
45
 
 
46
Many traditional VCS tools require a central server which provides the
 
47
change history or *repository* for a tree of files. To work on the files,
 
48
users need to connect to the server and *checkout* the files. This gives
 
49
them a directory or *working tree* in which a person can make changes.
 
50
To record or *commit* these changes, the user needs access to the central
 
51
server and they need to ensure they have merged their work with the latest
 
52
version stored before trying to commit. This approach is known as the
 
53
centralized model. 
 
54
 
 
55
The centralized model has proven useful over time but it can have some notable
 
56
drawbacks. Firstly, a centralized VCS requires that one is able to connect
 
57
to the server whenever one wants to do version control work. Secondly, the
 
58
centralized model tightly links the act of **snapshotting** changes with the act
 
59
of **publishing** those changes. This can be good in some circumstances but
 
60
it has a negative influence on quality in others.
 
61
 
 
62
Distributed VCS tools let users and teams have multiple repositories
 
63
rather than just a single central one. In Bazaar's case, the history is
 
64
normally kept in the same place as the code that is being version controlled.
 
65
This allows the user to commit their changes whenever it makes sense, even
 
66
when offline. Network access is only required when publishing changes or
 
67
when accessing changes in another location.
 
68
 
 
69
In fact, using distributed VCS tools wisely can have advantages well
 
70
beyond the obvious one of disconnected operations for developers.
 
71
Other advantages include:
 
72
 
 
73
 * easier for developers to create experimental branches
 
74
 * easier ad-hoc collaboration with peers
 
75
 * less time required on mechanical tasks - more time for creativity
 
76
 
 
77
 * increased release management flexibility through the use of
 
78
   "feature-wide" commits
 
79
 
 
80
 * trunk quality and stability can be kept higher, making everyone's
 
81
   job less stressful
 
82
 
 
83
 * in open source communities:
 
84
 
 
85
   * easier for non-core developers to create and maintain changes
 
86
 
 
87
   * easier for core developers to work with non-core developers and
 
88
     move them into the core
 
89
 
 
90
 * in companies, easier to work with distributed and outsourced teams.
 
91
   
 
92
For a detailed look at the advantages of distributed VCS tools over
 
93
centralized VCS tools, see http://bazaar-vcs.org/BzrWhy.
 
94
 
 
95
 
 
96
Key features of Bazaar
 
97
----------------------
 
98
 
 
99
While Bazaar is not the only distributed VCS tool around, it does have some
 
100
notable features that make it an excellent choice for many teams and
 
101
communities. These include:
 
102
 
 
103
 * it **Just Works** - a high focus on usability and performance
 
104
 * **adaptive** - cleanly supports many different ways of working together
 
105
 * **rich metadata** that tracks merge history across distributed locations,
 
106
   understands directories as first-class objects and correctly tracks
 
107
   renames of both files and directories
 
108
 * **integrated merging** that uses this metadata intelligently to
 
109
   ensure that merging is safe without being painful, letting you
 
110
   collaborate without fear
 
111
 * **truly portable** across many operating systems including Windows
 
112
 * **safe with your data** - integrity is checked using cryptographic
 
113
   techniques and all changes can be digitally signed if required
 
114
 * **low administration**, e.g. access to FTP or SFTP is enough to
 
115
   share with others - no special server required
 
116
 * **efficiently stores data** across branches in a flexible and safe way
 
117
 * an **open architecture and API** that makes it easy to integrate
 
118
   with other tools
 
119
 * a **large number of plugins** including bzr-svn and GUI front-ends
 
120
 * **excellent integration** with a range of companion tools and services
 
121
   including PQM, Bundle Buggy and Launchpad
 
122
 * **completely open source**
 
123
 * **commercial training and support** available from Canonical,
 
124
   the company that sponsors Ubuntu.
 
125
 
 
126
While all of these are important, perhaps the greatest asset Bazaar has is
 
127
an active and growing open source community behind it. Bazaar is completely
 
128
free software written in Python so it is easy to contribute improvements.
 
129
Our collective goal is to build and support a distributed VCS tool that
 
130
developers love to use, a tool that helps them get their job done without
 
131
getting in their way. If you wish to get involved, please see
 
132
http://bazaar-vcs.org/BzrSupport.
 
133
 
 
134
 
 
135
Learning more
 
136
-------------
 
137
 
 
138
This manual provides an easy to read introduction to Bazaar and how to use
 
139
it effectively.  It is recommended that all users read at least the rest of
 
140
this chapter as it:
 
141
 
 
142
 * explains the core concepts users need to know
 
143
 * introduces some popular ways of using Bazaar to collaborate.
 
144
 
 
145
Chapters 2-6 provide a closer look at how to use Bazaar to complete
 
146
various tasks. It is recommended that most users read these in first-to-last
 
147
order shortly after starting to use Bazaar. Chapters 7 and beyond provide
 
148
additional information including some recommended best practices.
 
149
This material can be read when required and in any order.
 
150
 
 
151
If you are already familar with other version control tools,
 
152
you may wish to get started quickly by reading the following documents:
 
153
 
 
154
 * `Bazaar in five minutes`_ - a mini-tutorial
 
155
 
 
156
 * `Bazaar Quick Start Card`_ - a one page summary of commonly used commands.
 
157
 
 
158
The online help and `Bazaar User Reference`_ are also particularly useful as
 
159
they provide all the gory details on the commands and options available.
 
160
 
 
161
.. _Bazaar in five minutes: ../mini-tutorial/index.html
 
162
.. _Bazaar Quick Start Card: ../quick-reference/quick-start-summary.svg
 
163
.. _Bazaar User Reference: ../user-reference/bzr_man.html
 
164
 
 
165
We hope you find this manual useful. If you have suggestions on how it
 
166
or the rest of Bazaar's documentation can be improved, please contact
 
167
us on the mailing list, bazaar@lists.canonical.com.