70
70
The centralized model can have some drawbacks. A centralized RCS requires
71
71
that one is able to connect to the server whenever one wants to do version
72
control work. This can be a bit of a problem if your server is on some other
73
machine on the internet and you are not. Or, worse yet, you **are** on the
72
control work. This can be a bit of a problem if your server on some other
73
machine on the internet and you are not. Or, worse yet, you ''are'' on the
74
74
internet but the server is missing!
76
76
Decentralized Revision Control Systems (which I'll call DRCS after this
90
90
a **revision** of the directory tree whenever the user asks.
92
92
Revision control software such as Bazaar can do much more than just
93
storage and performing undo. For example, with Bazaar a developer can
94
take the modifications in one branch of software and apply them to a
95
related branch -- even if those changes exist in a branch owned by
96
somebody else. This allows developers to cooperate without giving
97
write access to the repository.
93
storage and performing undo. For example, with Bazaar developer can
94
take the modifications in one branch of software and apply them to
95
another, related, branch -- even if those changes exist in a branch owned
96
by somebody else. This allows developers to cooperate without giving write
99
99
Bazaar remembers the ''ancestry'' of a revision: the previous revisions
100
100
that it is based upon. A single revision may have more than one direct
107
107
==============================
109
109
Bazaar installs a single new command, **bzr**. Everything else is a
110
subcommand of this. You can get some help with ``bzr help``. Some arguments
111
are grouped in topics: ``bzr help topics`` to see which topics are available.
112
There will be more in the future.
110
subcommand of this. You can get some help with `bzr help`. There will be
114
113
One function of a version control system is to keep track of who changed
115
114
what. In a decentralized system, that requires an identifier for each
119
118
guess that Bazaar makes, then three options exist:
121
120
1. Set an email address via ``bzr whoami``. This is the simplest way.
121
To set a global identity, use::
123
% bzr whoami 'Your Name <email@example.com>'
125
If you'd like to use a different address for a specific branch, enter
126
the branch folder and use::
128
% bzr whoami --branch 'Your Name <email@example.com>'
130
1. Setting the email address in the
131
``~/.bazaar/bazaar.conf`` [1]_ by adding the following lines. Please note that
132
``[DEFAULT]`` is case sensitive::
123
To set a global identity, use::
125
% bzr whoami "Your Name <email@example.com>"
127
If you'd like to use a different address for a specific branch, enter
128
the branch folder and use::
130
% bzr whoami --branch "Your Name <email@example.com>"
132
#. Setting the email address in the ``~/.bazaar/bazaar.conf`` [1]_ by adding the following lines.
133
Please note that ``[DEFAULT]`` is case sensitive::
135
135
email= Your Name <email@isp.com>
137
As above, you can override this settings on a branch by branch basis by
138
creating a branch section in ``~/.bazaar/locations.conf`` and adding the
140
[/the/path/to/the/branch]
137
As above, you can override this settings on a branch by branch basis by
138
creating a branch section in ``~/.bazaar/locations.conf`` and adding the
141
[/the/directory/to/the/branch]
141
142
email=Your Name <email@isp.com>
144
#. Overriding the two previous options by setting the global environment
145
variable ``$BZREMAIL`` or ``$EMAIL`` (``$BZREMAIL`` will take precedence)
146
to your full email address.
144
1. Overriding the two previous options by setting the global environment
145
variable ``$BZREMAIL`` or ``$EMAIL`` (``$BZREMAIL`` will take precedence)
146
to your full email address.
148
148
.. [1] On Windows, the users configuration files can be found in the
149
149
application data directory. So instead of ``~/.bazaar/branch.conf``
155
155
Creating a branch
156
156
=================
158
History is by default stored in the .bzr directory of the branch. In a
159
future version of Bazaar, there will be a facility to store it in a
160
separate repository, which may be remote. We create a new branch by
161
running ``bzr init`` in an existing directory::
158
History is by default stored in the .bzr directory of the branch. There
159
will be a facility to store it in a separate repository, which may be
160
remote. We create a new branch by running **bzr init** in an existing
175
As with CVS, there are three classes of file: unknown, ignored, and
175
As for CVS, there are three classes of file: unknown, ignored, and
176
176
versioned. The **add** command makes a file versioned: that is, changes
177
177
to it will be recorded by the system::
197
197
containing control files. By default there is no separate repository or
198
198
database as used in svn or svk. You can choose to create a repository if
199
199
you want to (see the **bzr init-repo** command). You may wish to do this
200
if you have very large branches, or many branches of a moderately sized
200
if you have very large branches, or many branches of a moderate sized
203
203
You'll usually refer to branches on your computer's filesystem just by
204
204
giving the name of the directory containing the branch. bzr also supports
205
accessing branches over http and sftp, for example::
205
accessing branches over http, for example::
207
207
% bzr log http://bazaar-vcs.org/bzr/bzr.dev/
208
% bzr log sftp://bazaar-vcs.org/bzr/bzr.dev/
210
By installing bzr plugins you can also access branches using the rsync
209
By installing bzr plugins you can also access branches over the sftp or
213
212
Reviewing changes
214
213
=================
300
299
If you use neither the `-m` nor the `-F` option then bzr will open an
301
300
editor for you to enter a message. The editor to run is controlled by
302
your `$VISUAL` or `$EDITOR` environment variable, which can be overridden
303
by the `editor` setting in to ~/.bazaar/bazaar.conf; `$BZR_EDITOR` will
304
override either of the above mentioned editor options. If you quit the
305
editor without making any changes, the commit will be cancelled.
301
your `$EDITOR` environment variable or
302
add `editor` to ~/.bazaar/bazaar.conf; `$BZR_EDITOR` will override
303
the above mentioned editor options. If you quit the editor without
304
making any changes, the commit will be cancelled.
502
If there is a conflict during a merge, 3 files with the same basename
503
are created. The filename of the common base is appended with ".BASE",
504
the filename of the file containing your changes is appended with
505
".THIS" and the filename with the changes from the other tree is
506
appended with ".OTHER". Using a program such as kdiff3, you can now
507
comfortably merge them into one file. In order to commit you have to
508
rename the merged file (".THIS") to the original file name. To
509
complete the conflict resolution you must use the resolve command,
510
which will remove the ".OTHER" and ".BASE" files. As long as there
511
exist files with .BASE, .THIS or .OTHER the commit command will
516
% kdiff3 file.BASE file.OTHER file.THIS
501
If there is a conflict during a merge, 3 files with the same basename are
502
created. The filename of the common base is appended with .BASE, the
503
filename of the file containing your changes is appended .THIS and the
504
filename with the changes from the other tree is appended .OTHER.
505
Using a program such as kdiff3, you can now comfortably merge them into
506
one file. To commit you have to rename it to the original basename and
507
delete the other two files. As long as there exist files with .BASE, .THIS
508
or .OTHER the commit command will complain.
520
510
[**TODO**: explain conflict markers within files]
528
518
directory. One can push a branch (or the changes for a branch) by one of
529
519
the following three methods:
531
* Rsync: rsync -avrz LOCALBRANCH servername.com/path/to/directory
521
* Rsync: rsync -avrz LOCALBRANCH servername.com/this/directory/here
533
523
(or any other tool for publishing a directory to a web site.)
535
* bzr push sftp://servername.com/path/to/directory
525
* bzr push sftp://servername.com/this/directory/here
537
(The destination directory must already exist unless the
538
``--create-prefix`` option is used.)
527
(The directory that must already exist)
540
529
* The rspush plugin that comes with BzrTools