~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/tutorial.txt

  • Committer: Robert Collins
  • Date: 2007-03-05 03:43:56 UTC
  • mfrom: (2312 +trunk)
  • mto: (2255.11.6 dirstate)
  • mto: This revision was merged to the branch mainline in revision 2322.
  • Revision ID: robertc@robertcollins.net-20070305034356-og43j35eg62m952f
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
69
69
 
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!
75
75
 
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. 
91
91
 
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
97
 
access to repository.
 
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.
98
98
 
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:
120
120
 
121
121
 1. Set an email address via ``bzr whoami``.  This is the simplest way.
122
 
 To set a global identity, use::
123
 
 
124
 
     % bzr whoami 'Your Name <email@example.com>'
125
 
 
126
 
 If you'd like to use a different address for a specific branch, enter
127
 
 the branch folder and use::
128
 
 
129
 
     % bzr whoami --branch 'Your Name <email@example.com>'
130
 
 
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::
134
122
 
 
123
    To set a global identity, use::
 
124
 
 
125
    % bzr whoami 'Your Name <email@example.com>'
 
126
 
 
127
    If you'd like to use a different address for a specific branch, enter
 
128
    the branch folder and use::
 
129
 
 
130
    % bzr whoami --branch 'Your Name <email@example.com>'
 
131
 
 
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
134
    [DEFAULT]
136
135
    email= Your Name <email@isp.com>
137
136
 
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
140
 
 following lines::
141
 
 
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
 
139
    following lines::
 
140
    [/the/path/to/the/branch]
143
141
    email=Your Name <email@isp.com>
144
 
 
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.
 
142
 
 
143
 
 
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.
148
147
 
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
=================
158
157
 
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
162
 
directory::
 
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::
163
162
 
164
163
    % mkdir tutorial
165
164
    % cd tutorial
173
172
    ./  ../  .bzr/
174
173
    %
175
174
 
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::
179
178
 
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
202
201
project.
203
202
 
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::
207
206
 
208
207
    % bzr log http://bazaar-vcs.org/bzr/bzr.dev/
 
208
    % bzr log sftp://bazaar-vcs.org/bzr/bzr.dev/
209
209
 
210
 
By installing bzr plugins you can also access branches over the sftp or
211
 
rsync protocols.
 
210
By installing bzr plugins you can also access branches using the rsync
 
211
protocol.
212
212
 
213
213
Reviewing changes
214
214
=================
499
499
  % bzr merge URL
500
500
 
501
501
 
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
 
512
report an error.
 
513
 
 
514
::
 
515
 
 
516
  % kdiff3 file.BASE file.OTHER file.THIS
 
517
  % mv file.THIS file
 
518
  % bzr resolve file
510
519
 
511
520
[**TODO**: explain conflict markers within files]
512
521
 
519
528
directory.  One can push a branch (or the changes for a branch) by one of
520
529
the following three methods:
521
530
 
522
 
* Rsync:   rsync -avrz LOCALBRANCH  servername.com/this/directory/here
 
531
* Rsync:   rsync -avrz LOCALBRANCH  servername.com/path/to/directory
523
532
 
524
533
  (or any other tool for publishing a directory to a web site.)
525
534
 
526
 
* bzr push sftp://servername.com/this/directory/here 
 
535
* bzr push sftp://servername.com/path/to/directory 
527
536
 
528
 
  (The directory that must already exist)
 
537
  (The destination directory must already exist unless the
 
538
  ``--create-prefix`` option is used.)
529
539
 
530
540
* The rspush plugin that comes with BzrTools
531
541