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 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 is 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 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
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.
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
119
119
guess that Bazaar makes, then three options exist:
121
121
1. Set an email address via ``bzr whoami``. This is the simplest way.
122
To set a global identity, use::
124
% bzr whoami 'Your Name <email@example.com>'
126
If you'd like to use a different address for a specific branch, enter
127
the branch folder and use::
129
% bzr whoami --branch 'Your Name <email@example.com>'
131
1. Setting the email address in the
132
``~/.bazaar/bazaar.conf`` [1]_ by adding the following lines. Please note that
133
``[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::
136
135
email= Your Name <email@isp.com>
138
As above, you can override this settings on a branch by branch basis by
139
creating a branch section in ``~/.bazaar/locations.conf`` and adding the
142
[/the/directory/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
140
[/the/path/to/the/branch]
143
141
email=Your Name <email@isp.com>
145
1. Overriding the two previous options by setting the global environment
146
variable ``$BZREMAIL`` or ``$EMAIL`` (``$BZREMAIL`` will take precedence)
147
to your full email address.
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.
149
148
.. [1] On Windows, the users configuration files can be found in the
150
149
application data directory. So instead of ``~/.bazaar/branch.conf``
156
155
Creating a branch
157
156
=================
159
History is by default stored in the .bzr directory of the branch. There
160
will be a facility to store it in a separate repository, which may be
161
remote. We create a new branch by running **bzr init** in an existing
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::
176
As for CVS, there are three classes of file: unknown, ignored, and
175
As with CVS, there are three classes of file: unknown, ignored, and
177
176
versioned. The **add** command makes a file versioned: that is, changes
178
177
to it will be recorded by the system::
198
197
containing control files. By default there is no separate repository or
199
198
database as used in svn or svk. You can choose to create a repository if
200
199
you want to (see the **bzr init-repo** command). You may wish to do this
201
if you have very large branches, or many branches of a moderate sized
200
if you have very large branches, or many branches of a moderately sized
204
203
You'll usually refer to branches on your computer's filesystem just by
205
204
giving the name of the directory containing the branch. bzr also supports
206
accessing branches over http, for example::
205
accessing branches over http and sftp, for example::
208
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 over the sftp or
210
By installing bzr plugins you can also access branches using the rsync
213
213
Reviewing changes
214
214
=================
502
If there is a conflict during a merge, 3 files with the same basename are
503
created. The filename of the common base is appended with .BASE, the
504
filename of the file containing your changes is appended .THIS and the
505
filename with the changes from the other tree is appended .OTHER.
506
Using a program such as kdiff3, you can now comfortably merge them into
507
one file. To commit you have to rename it to the original basename and
508
delete the other two files. As long as there exist files with .BASE, .THIS
509
or .OTHER the commit command will complain.
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
511
520
[**TODO**: explain conflict markers within files]
519
528
directory. One can push a branch (or the changes for a branch) by one of
520
529
the following three methods:
522
* Rsync: rsync -avrz LOCALBRANCH servername.com/this/directory/here
531
* Rsync: rsync -avrz LOCALBRANCH servername.com/path/to/directory
524
533
(or any other tool for publishing a directory to a web site.)
526
* bzr push sftp://servername.com/this/directory/here
535
* bzr push sftp://servername.com/path/to/directory
528
(The directory that must already exist)
537
(The destination directory must already exist unless the
538
``--create-prefix`` option is used.)
530
540
* The rspush plugin that comes with BzrTools