bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
1  | 
.. This file is in Python ReStructuredText format - it can be formatted  | 
2  | 
.. into HTML or text. In the future we plan to extract the example commands  | 
|
3  | 
.. and automatically test them.  | 
|
4  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
5  | 
.. This text was previously on the wiki at  | 
6  | 
.. http://bazaar.canonical.com/IntroductionToBzr  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
7  | 
.. but has been moved into the source tree so it can be kept in sync with  | 
8  | 
.. the source and possibly automatically checked.  | 
|
9  | 
||
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
10  | 
===============  | 
11  | 
Bazaar Tutorial  | 
|
12  | 
===============  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
13  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
14  | 
Current for bzr-0.8, 2006-04  | 
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
15  | 
|
16  | 
||
17  | 
Introduction  | 
|
18  | 
============  | 
|
19  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
20  | 
If you are already familiar with decentralized revision control, then  | 
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
21  | 
please feel free to skip ahead to "Introducing Yourself to Bazaar". If,  | 
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
22  | 
on the other hand, you are familiar with revision control but not  | 
23  | 
decentralized revision control, then please start at "How DRCS is  | 
|
24  | 
different." Otherwise, get some coffee or tea, get comfortable and get  | 
|
25  | 
ready to catch up.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
26  | 
|
27  | 
The Purposes of Revision Control  | 
|
28  | 
================================  | 
|
29  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
30  | 
Odds are that you have worked on some sort of textual data -- the sources  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
31  | 
to a program, web sites or the config files that Unix system  | 
32  | 
administrators have to deal with in /etc. The chances are also good that  | 
|
33  | 
you have made some sort of mistake that you deeply regretted. Perhaps you  | 
|
34  | 
deleted the configuration file for your mailserver or perhaps mauled the  | 
|
35  | 
source code for a pet project. Whatever happened, you have just deleted  | 
|
36  | 
important information that you would desperately like to get back. If this  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
37  | 
has ever happened to you, then you are probably ready for Bazaar.  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
38  | 
|
39  | 
Revision control systems (which I'll henceforth call RCS) such as  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
40  | 
Bazaar give you the ability to track changes for a directory by turning  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
41  | 
it into something slightly more complicated than a directory that we call  | 
42  | 
a **branch**. The branch not only stores how the directory looks right  | 
|
43  | 
now, but also how it looked at various points in the past. Then, when you  | 
|
44  | 
do something you wish you hadn't, you can restore the directory to the way  | 
|
45  | 
it looked at some point in the past.  | 
|
46  | 
||
47  | 
Revision control systems give users the ability to save changes to a  | 
|
48  | 
branch by "committing a **revision**". The revision created is essentially  | 
|
49  | 
a summary of the changes that were made since the last time the tree was  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
50  | 
saved.  | 
51  | 
||
52  | 
These revisions have other uses as well. For example, one can comment  | 
|
53  | 
revisions to record what the recent set of changes meant by providing an  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
54  | 
optional log message. Real life log messages include things like "Fixed  | 
55  | 
the web template to close the table" and "Added sftp suppport. Fixes #595"  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
56  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
57  | 
We keep these logs so that if later there is some sort of problem with  | 
58  | 
sftp, we can figure out when the problem probably happened.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
59  | 
|
60  | 
How DRCS is Different  | 
|
61  | 
---------------------  | 
|
62  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
63  | 
Many Revision Control Systems (RCS) are stored on servers. If one wants to  | 
64  | 
work on the code stored within an RCS, then one needs to connect to the  | 
|
65  | 
server and "checkout" the code. Doing so gives one a directory in which a  | 
|
66  | 
person can make changes and then commit. The RCS client then connects to  | 
|
67  | 
the RCS server and stores the changes. This method is known as the  | 
|
68  | 
centralized model.  | 
|
69  | 
||
70  | 
The centralized model can have some drawbacks. A centralized RCS requires  | 
|
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  | 
|
74  | 
internet but the server is missing!  | 
|
75  | 
||
76  | 
Decentralized Revision Control Systems (which I'll call DRCS after this  | 
|
77  | 
point) deal with this problem by keeping branches on the same machine as  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
78  | 
the client. In Bazaar's case, the branch is kept in the same place as  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
79  | 
the code that is being version controlled. This allows the user to save  | 
80  | 
his changes (**commit**) whenever he wants -- even if he is offline. The  | 
|
81  | 
user only needs internet access when he wants to access the changes in  | 
|
82  | 
someone else's branch that are somewhere else.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
83  | 
|
84  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
85  | 
A common requirement that many people have is the need to keep track of  | 
86  | 
the changes for a directory such as file and subdirectory changes.  | 
|
87  | 
Performing this tracking by hand is a awkward process that over time  | 
|
88  | 
becomes unwieldy. That is, until one considers version control tools such  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
89  | 
as Bazaar. These tools automate the process of storing data by creating  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
90  | 
a **revision** of the directory tree whenever the user asks.  | 
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
91  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
92  | 
Revision control software such as Bazaar can do much more than just  | 
93  | 
storage and performing undo. For example, with Bazaar developer can  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
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  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
97  | 
access to repository.  | 
98  | 
||
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
99  | 
Bazaar remembers the ''ancestry'' of a revision: the previous revisions  | 
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
100  | 
that it is based upon. A single revision may have more than one direct  | 
101  | 
descendant, each with different changes, representing a divergence in the  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
102  | 
evolution of the tree. By branching, Bazaar allows multiple people to  | 
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
103  | 
cooperate on the evolution of a project, without all needing to work in  | 
104  | 
strict lock-step. Branching can be useful even for a single developer.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
105  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
106  | 
Introducing yourself to Bazaar  | 
107  | 
==============================  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
108  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
109  | 
Bazaar installs a single new command, **bzr**. Everything else is a  | 
| 
2070.4.3
by John Arbash Meinel
 code and doc cleanup  | 
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.  | 
|
| 
2023.1.1
by ghigo
 add topics help  | 
112  | 
There will be more in the future.  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
113  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
114  | 
One function of a version control system is to keep track of who changed  | 
115  | 
what. In a decentralized system, that requires an identifier for each  | 
|
116  | 
author that is globally unique. Most people already have one of these: an  | 
|
117  | 
email address. Bzr is smart enough to automatically generate an email  | 
|
118  | 
address by looking up your username and hostname. If you don't like the  | 
|
| 
1861.2.6
by Alexander Belchenko
 branding: change Bazaar-NG to Bazaar  | 
119  | 
guess that Bazaar makes, then three options exist:  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
120  | 
|
| 
1816.2.9
by Robey Pointer
 in the tutorial, steer users first toward using 'whoami' to set their email  | 
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  | 
||
| 
1684.1.2
by Martin Pool
 Remove references to old versions from the tutorial  | 
131  | 
1. Setting the email address in the  | 
| 
1836.1.9
by John Arbash Meinel
 Add global ignore information to the tutorial.  | 
132  | 
``~/.bazaar/bazaar.conf`` [1]_ by adding the following lines. Please note that  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
133  | 
``[DEFAULT]`` is case sensitive::  | 
134  | 
||
135  | 
[DEFAULT]  | 
|
136  | 
email= Your Name <email@isp.com>  | 
|
137  | 
||
| 
1816.2.9
by Robey Pointer
 in the tutorial, steer users first toward using 'whoami' to set their email  | 
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::  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
141  | 
|
142  | 
[/the/directory/to/the/branch]  | 
|
143  | 
email=Your Name <email@isp.com>  | 
|
144  | 
||
145  | 
1. Overriding the two previous options by setting the global environment  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
146  | 
variable ``$BZREMAIL`` or ``$EMAIL`` (``$BZREMAIL`` will take precedence)  | 
147  | 
to your full email address.  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
148  | 
|
| 
1836.1.9
by John Arbash Meinel
 Add global ignore information to the tutorial.  | 
149  | 
.. [1] On Windows, the users configuration files can be found in the  | 
150  | 
application data directory. So instead of ``~/.bazaar/branch.conf``  | 
|
151  | 
the configuration file can be found as:  | 
|
152  | 
``C:\Documents and Settings\<username>\Application Data\Bazaar\2.0\branch.conf``.  | 
|
153  | 
The same is true for ``locations.conf``, ``ignore``, and the  | 
|
154  | 
``plugins`` directory.  | 
|
155  | 
||
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
156  | 
Creating a branch  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
157  | 
=================  | 
158  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
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::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
163  | 
|
164  | 
% mkdir tutorial  | 
|
165  | 
% cd tutorial  | 
|
166  | 
% ls -a  | 
|
167  | 
./ ../  | 
|
168  | 
% pwd  | 
|
169  | 
/home/mbp/work/bzr.test/tutorial  | 
|
170  | 
%  | 
|
171  | 
% bzr init  | 
|
172  | 
% ls -aF  | 
|
173  | 
./ ../ .bzr/  | 
|
174  | 
%  | 
|
175  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
176  | 
As for CVS, there are three classes of file: unknown, ignored, and  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
177  | 
versioned. The **add** command makes a file versioned: that is, changes  | 
178  | 
to it will be recorded by the system::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
179  | 
|
180  | 
% echo 'hello world' > hello.txt  | 
|
181  | 
% bzr status  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
182  | 
unknown:  | 
183  | 
hello.txt  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
184  | 
% bzr unknowns  | 
185  | 
hello.txt  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
186  | 
% bzr add hello.txt  | 
187  | 
added hello.txt  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
188  | 
% bzr unknowns  | 
189  | 
||
190  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
191  | 
If you add the wrong file, simply use **bzr remove** to make it  | 
192  | 
unversioned again. This does not delete the working copy.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
193  | 
|
194  | 
Branch locations  | 
|
195  | 
================  | 
|
196  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
197  | 
All history is stored in a branch, which is just an on-disk directory  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
198  | 
containing control files. By default there is no separate repository or  | 
199  | 
database as used in svn or svk. You can choose to create a repository if  | 
|
200  | 
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  | 
|
202  | 
project.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
203  | 
|
204  | 
You'll usually refer to branches on your computer's filesystem just by  | 
|
205  | 
giving the name of the directory containing the branch. bzr also supports  | 
|
206  | 
accessing branches over http, for example::  | 
|
207  | 
||
| 
1861.2.8
by Alexander Belchenko
 More branding: bazaar-ng -> Bazaar; bazaar-ng.org -> bazaar-vcs.org  | 
208  | 
% bzr log http://bazaar-vcs.org/bzr/bzr.dev/  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
209  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
210  | 
By installing bzr plugins you can also access branches over the sftp or  | 
211  | 
rsync protocols.  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
212  | 
|
213  | 
Reviewing changes  | 
|
214  | 
=================  | 
|
215  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
216  | 
Once you have completed some work, you will want to **commit** it to the  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
217  | 
version history. It is good to commit fairly often: whenever you get a  | 
218  | 
new feature working, fix a bug, or improve some code or documentation.  | 
|
219  | 
It's also a good practice to make sure that the code compiles and passes  | 
|
220  | 
its test suite before committing, to make sure that every revision is a  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
221  | 
known-good state. You can also review your changes, to make sure you're  | 
222  | 
committing what you intend to, and as a chance to rethink your work before  | 
|
223  | 
you permanently record it.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
224  | 
|
225  | 
Two bzr commands are particularly useful here: **status** and **diff**.  | 
|
226  | 
||
227  | 
bzr status  | 
|
228  | 
----------  | 
|
229  | 
||
230  | 
The **status** command tells you what changes have been made to the  | 
|
231  | 
working directory since the last revision::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
232  | 
|
233  | 
% bzr status  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
234  | 
modified:  | 
235  | 
foo  | 
|
236  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
237  | 
By default **bzr status** hides "boring" files that are either unchanged  | 
238  | 
or ignored. To see them too, use the --all option. The status command  | 
|
239  | 
can optionally be given the name of some files or directories to check.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
240  | 
|
241  | 
bzr diff  | 
|
242  | 
--------  | 
|
243  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
244  | 
The **diff** command shows the full text of changes to all files as a  | 
245  | 
standard unified diff. This can be piped through many programs such as  | 
|
246  | 
''patch'', ''diffstat'', ''filterdiff'' and ''colordiff''::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
247  | 
|
248  | 
% bzr diff  | 
|
249  | 
*** added file 'hello.txt'  | 
|
250  | 
--- /dev/null  | 
|
251  | 
+++ hello.txt  | 
|
252  | 
@@ -1,0 +1,1 @@  | 
|
253  | 
+hello world  | 
|
254  | 
||
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
255  | 
|
256  | 
With the ''-r'' option, the tree is compared to an earlier revision, or  | 
|
257  | 
the differences between two versions are shown::  | 
|
258  | 
||
259  | 
% bzr diff -r 1000.. # everything since r1000  | 
|
260  | 
% bzr diff -r 1000..1100 # changes from 1000 to 1100  | 
|
261  | 
||
262  | 
The --diff-options option causes bzr to run the external diff program,  | 
|
263  | 
passing options. For example::  | 
|
264  | 
||
265  | 
% bzr diff --diff-options --side-by-side foo  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
266  | 
|
| 
1694.2.3
by Martin Pool
 Add -p0, -p1 options for diff.  | 
267  | 
Some projects prefer patches to show a prefix at the start of the path for  | 
268  | 
old and new files. The --prefix option can be used to provide such a prefix.  | 
|
269  | 
As a shortcut, ``bzr diff -p1`` produces a form that works with the  | 
|
270  | 
command ``patch -p1``.  | 
|
271  | 
||
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
272  | 
Committing changes  | 
273  | 
==================  | 
|
274  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
275  | 
When the working tree state is satisfactory, it can be **committed** to  | 
276  | 
the branch, creating a new revision holding a snapshot of that state.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
277  | 
|
278  | 
bzr commit  | 
|
279  | 
----------  | 
|
280  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
281  | 
The **commit** command takes a message describing the changes in the  | 
282  | 
revision. It also records your userid, the current time and timezone, and  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
283  | 
the inventory and contents of the tree. The commit message is specified  | 
284  | 
by the ''-m'' or ''--message'' option. You can enter a multi-line commit  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
285  | 
message; in most shells you can enter this just by leaving the quotes open  | 
286  | 
at the end of the line.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
287  | 
|
288  | 
::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
289  | 
|
290  | 
% bzr commit -m "added my first file"  | 
|
291  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
292  | 
You can also use the -F option to take the message from a file. Some  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
293  | 
people like to make notes for a commit message while they work, then  | 
294  | 
review the diff to make sure they did what they said they did. (This file  | 
|
295  | 
can also be useful when you pick up your work after a break.)  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
296  | 
|
297  | 
Message from an editor  | 
|
298  | 
======================  | 
|
299  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
300  | 
If you use neither the `-m` nor the `-F` option then bzr will open an  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
301  | 
editor for you to enter a message. The editor to run is controlled by  | 
| 
2135.1.2
by Matthew Fuller
 Mention $VISUAL here, and play with the wording of the other ways of  | 
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.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
306  | 
|
307  | 
Selective commit  | 
|
308  | 
----------------  | 
|
309  | 
||
310  | 
If you give file or directory names on the commit command line then only  | 
|
311  | 
the changes to those files will be committed. For example::  | 
|
312  | 
||
313  | 
% bzr commit -m "documentation fix" commit.py  | 
|
314  | 
||
315  | 
By default bzr always commits all changes to the tree, even if run from a  | 
|
316  | 
subdirectory. To commit from only the current directory down, use::  | 
|
317  | 
||
318  | 
% bzr commit .  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
319  | 
|
320  | 
||
321  | 
Removing uncommitted changes  | 
|
322  | 
============================  | 
|
323  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
324  | 
If you've made some changes and don't want to keep them, use the  | 
325  | 
**revert** command to go back to the previous head version. It's a good  | 
|
326  | 
idea to use **bzr diff** first to see what will be removed. By default the  | 
|
327  | 
revert command reverts the whole tree; if file or directory names are  | 
|
328  | 
given then only those ones will be affected. **revert** also clears the  | 
|
329  | 
list of pending merges revisions.  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
330  | 
|
331  | 
Ignoring files  | 
|
332  | 
==============  | 
|
333  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
334  | 
Many source trees contain some files that do not need to be versioned,  | 
335  | 
such as editor backups, object or bytecode files, and built programs. You  | 
|
336  | 
can simply not add them, but then they'll always crop up as unknown files.  | 
|
337  | 
You can also tell bzr to ignore these files by adding them to a file  | 
|
338  | 
called ''.bzrignore'' at the top of the tree.  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
339  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
340  | 
This file contains a list of file wildcards (or "globs"), one per line.  | 
341  | 
Typical contents are like this::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
342  | 
|
343  | 
*.o  | 
|
344  | 
*~  | 
|
345  | 
*.tmp  | 
|
346  | 
*.py[co]  | 
|
347  | 
||
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
348  | 
If a glob contains a slash, it is matched against the whole path from the  | 
349  | 
top of the tree; otherwise it is matched against only the filename. So  | 
|
350  | 
the previous example ignores files with extension ``.o`` in all  | 
|
351  | 
subdirectories, but this example ignores only config.h at the top level  | 
|
352  | 
and HTML files in ``doc/``::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
353  | 
|
354  | 
./config.h  | 
|
355  | 
doc/*.html  | 
|
356  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
357  | 
To get a list of which files are ignored and what pattern they matched,  | 
358  | 
use ''bzr ignored''::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
359  | 
|
360  | 
% bzr ignored  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
361  | 
config.h ./config.h  | 
362  | 
configure.in~ *~  | 
|
363  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
364  | 
It is OK to have either an ignore pattern match a versioned file, or to  | 
365  | 
add an ignored file. Ignore patterns have no effect on versioned files;  | 
|
366  | 
they only determine whether unversioned files are reported as unknown or  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
367  | 
ignored.  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
368  | 
|
| 
1836.1.9
by John Arbash Meinel
 Add global ignore information to the tutorial.  | 
369  | 
The ``.bzrignore`` file should normally be versioned, so that new copies  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
370  | 
of the branch see the same patterns::  | 
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
371  | 
|
372  | 
% bzr add .bzrignore  | 
|
373  | 
% bzr commit -m "Add ignore patterns"  | 
|
374  | 
||
375  | 
||
| 
1836.1.9
by John Arbash Meinel
 Add global ignore information to the tutorial.  | 
376  | 
Global Ignores  | 
377  | 
--------------  | 
|
378  | 
||
379  | 
There are some ignored files which are not project specific, but more user  | 
|
380  | 
specific. Things like editor temporary files, or personal temporary files.  | 
|
381  | 
Rather than add these ignores to every project, bzr supports a global  | 
|
382  | 
ignore file in ``~/.bazaar/ignore`` [1]_. It has the same syntax as the  | 
|
383  | 
per-project ignore file.  | 
|
384  | 
||
385  | 
||
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
386  | 
Examining history  | 
387  | 
=================  | 
|
388  | 
||
389  | 
bzr log  | 
|
390  | 
-------  | 
|
391  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
392  | 
The **bzr log** command shows a list of previous revisions. The **bzr log  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
393  | 
--forward** command does the same in chronological order to get most  | 
394  | 
recent revisions printed at last.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
395  | 
|
396  | 
As with bzr diff, bzr log supports the -r argument::  | 
|
397  | 
||
398  | 
% bzr log -r 1000.. # Revision 1000 and everything after it  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
399  | 
% bzr log -r ..1000 # Everything up to and including r1000  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
400  | 
% bzr log -r 1000..1100 # changes from 1000 to 1100  | 
401  | 
% bzr log -r 1000 # The changes in only revision 1000  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
402  | 
|
403  | 
||
404  | 
Branch statistics  | 
|
405  | 
=================  | 
|
406  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
407  | 
The **bzr info** command shows some summary information about the working  | 
408  | 
tree and the branch history.  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
409  | 
|
410  | 
||
411  | 
Versioning directories  | 
|
412  | 
======================  | 
|
413  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
414  | 
bzr versions files and directories in a way that can keep track of renames  | 
415  | 
and intelligently merge them::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
416  | 
|
417  | 
% mkdir src  | 
|
418  | 
    % echo 'int main() {}' > src/simple.c
 | 
|
419  | 
% bzr add src  | 
|
| 
1740.4.1
by Matthew Fuller
 Make status output actually look like status output.  | 
420  | 
added src  | 
421  | 
added src/simple.c  | 
|
422  | 
% bzr status  | 
|
423  | 
added:  | 
|
424  | 
src/  | 
|
425  | 
src/simple.c  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
426  | 
|
427  | 
||
428  | 
Deleting and removing files  | 
|
429  | 
===========================  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
430  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
431  | 
You can delete files or directories by just deleting them from the working  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
432  | 
directory. This is a bit different to CVS, which requires that you also  | 
433  | 
do **cvs remove**.  | 
|
434  | 
||
435  | 
**bzr remove** makes the file un-versioned, but does not delete  | 
|
436  | 
the working copy. This is useful when you add the wrong file, or decide  | 
|
437  | 
that a file should actually not be versioned.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
438  | 
|
439  | 
::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
440  | 
|
441  | 
% rm -r src  | 
|
442  | 
% bzr remove -v hello.txt  | 
|
443  | 
? hello.txt  | 
|
444  | 
% bzr status  | 
|
| 
1740.4.1
by Matthew Fuller
 Make status output actually look like status output.  | 
445  | 
removed:  | 
446  | 
hello.txt  | 
|
447  | 
src/  | 
|
448  | 
src/simple.c  | 
|
449  | 
unknown:  | 
|
450  | 
hello.txt  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
451  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
452  | 
If you remove the wrong file by accident, you can use **bzr revert** to  | 
453  | 
restore it.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
454  | 
|
455  | 
||
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
456  | 
Branching  | 
457  | 
=========  | 
|
458  | 
||
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
459  | 
Often rather than starting your own project, you will want to submit a  | 
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
460  | 
change to an existing project. You can get a copy of an existing branch  | 
461  | 
by copying its directory, expanding a tarball, or by a remote copy using  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
462  | 
something like rsync. You can also use bzr to fetch a copy. Because this  | 
463  | 
new copy is potentially a new branch, the command is called *branch*::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
464  | 
|
| 
1861.2.8
by Alexander Belchenko
 More branding: bazaar-ng -> Bazaar; bazaar-ng.org -> bazaar-vcs.org  | 
465  | 
% bzr branch http://bazaar-vcs.org/bzr/bzr.dev  | 
| 
1185.1.13
by Robert Collins
 and the tutorial patch came back, the very next day  | 
466  | 
% cd bzr.dev  | 
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
467  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
468  | 
This copies down the complete history of this branch, so we can do all  | 
469  | 
operations on it locally: log, annotate, making and merging branches.  | 
|
470  | 
There will be an option to get only part of the history if you wish.  | 
|
471  | 
||
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
472  | 
Following upstream changes  | 
473  | 
==========================  | 
|
474  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
475  | 
You can stay up-to-date with the parent branch by "pulling" in their  | 
476  | 
changes::  | 
|
| 
974.1.26
by aaron.bentley at utoronto
 merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472  | 
477  | 
|
478  | 
% bzr pull  | 
|
479  | 
||
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
480  | 
After this change, the local directory will be a mirror of the source. This  | 
481  | 
includes the ''revision-history'' - which is a list of the commits done in  | 
|
482  | 
this branch, rather than merged from other branches.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
483  | 
|
| 
1649.1.1
by Robert Collins
 * 'pull' and 'push' now normalise the revision history, so that any two  | 
484  | 
This command only works if your local (destination) branch is either an  | 
485  | 
older copy of the parent branch with no new commits of its own, or if the  | 
|
486  | 
most recent commit in your local branch has been merged into the parent  | 
|
487  | 
branch.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
488  | 
|
489  | 
Merging from related branches  | 
|
490  | 
=============================  | 
|
491  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
492  | 
If two branches have diverged (both have unique changes) then **bzr  | 
493  | 
merge** is the appropriate command to use. Merge will automatically  | 
|
494  | 
calculate the changes that exist in the branch you're merging from that  | 
|
495  | 
are not in your branch and attempt to apply them in your branch.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
496  | 
|
497  | 
::  | 
|
498  | 
||
499  | 
% bzr merge URL  | 
|
500  | 
||
501  | 
||
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
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.  | 
|
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
510  | 
|
511  | 
[**TODO**: explain conflict markers within files]  | 
|
512  | 
||
513  | 
||
514  | 
Publishing your branch  | 
|
515  | 
======================  | 
|
| 
1610.2.1
by James Blackwell
 Copied in docs for wiki & First round cleanup  | 
516  | 
|
| 
1669.1.1
by Martin Pool
 Reflow tutorial.txt to fit on 80-col screen (Malone #39657)  | 
517  | 
You don't need a special server to publish a bzr branch, just a normal web  | 
518  | 
server. Just mirror the files to your server, including the .bzr  | 
|
519  | 
directory. One can push a branch (or the changes for a branch) by one of  | 
|
520  | 
the following three methods:  | 
|
521  | 
||
522  | 
* Rsync: rsync -avrz LOCALBRANCH servername.com/this/directory/here  | 
|
523  | 
||
524  | 
(or any other tool for publishing a directory to a web site.)  | 
|
525  | 
||
526  | 
* bzr push sftp://servername.com/this/directory/here  | 
|
527  | 
||
528  | 
(The directory that must already exist)  | 
|
529  | 
||
| 
1740.4.2
by Matthew Fuller
 bzrtools calls its rsync bit 'rspush' now.  | 
530  | 
* The rspush plugin that comes with BzrTools  | 
| 
1536.1.1
by Martin Pool
 Move in tutorial text from wiki.  | 
531  | 
|
| 
1910.1.3
by Aaron Bentley
 Update NEWS and tutorial to describe merge --uncommitted  | 
532  | 
|
533  | 
Moving changes between trees  | 
|
534  | 
============================  | 
|
535  | 
||
536  | 
It happens to the best of us: sometimes you'll make changes in the wrong  | 
|
537  | 
tree. Maybe because you've accidentally started work in the wrong directory,  | 
|
538  | 
maybe because as you're working, the change turns out to be bigger than you  | 
|
539  | 
expected, so you start a new branch for it.  | 
|
540  | 
||
541  | 
To move your changes from one tree to another, use  | 
|
542  | 
||
543  | 
::  | 
|
544  | 
||
545  | 
% cd NEWDIR  | 
|
546  | 
% bzr merge --uncommitted OLDDIR  | 
|
547  | 
||
548  | 
This will apply all of the uncommitted changes you made in OLDDIR to NEWDIR.  | 
|
549  | 
It will not apply committed changes, even if they could be applied to NEWDIR  | 
|
550  | 
with a regular merge. The changes will remain in OLDDIR, but you can use **bzr  | 
|
551  | 
revert OLDDIR** to remove them, once you're satisfied with NEWDIR.  | 
|
552  | 
||
553  | 
NEWDIR does not have to be a copy of OLDDIR, but they should be related.  | 
|
554  | 
The more different they are, the greater the chance of conflicts.  |