~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/en/mini-tutorial/index.txt

  • Committer: Ian Clatworthy
  • Date: 2007-08-13 14:33:10 UTC
  • mto: (2733.1.1 ianc-integration)
  • mto: This revision was merged to the branch mainline in revision 2734.
  • Revision ID: ian.clatworthy@internode.on.net-20070813143310-twhj4la0qnupvze8
Added Quick Start Summary

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
======================
2
 
Bazaar in five minutes
3
 
======================
 
1
====================
 
2
Bazaar Mini Tutorial
 
3
====================
 
4
 
 
5
.. contents::
4
6
 
5
7
Introduction
6
8
============
7
9
 
8
 
Bazaar is a distributed version control system that makes it easier for
9
 
people to work together on software projects.
10
 
 
11
 
Over the next five minutes, you'll learn how to put your files under
12
 
version control, how to record changes to them, examine your work, publish
13
 
it and send your work for merger into a project's trunk.
 
10
This is a very brief 5-minute tutorial, covering only what a first time user
 
11
needs to start a project or start contributing to a project using Bazaar.
 
12
For a more detailed look, see `Learning More`_.
14
13
 
15
14
 
16
15
Installation
17
16
============
18
17
 
19
 
This guide doesn't describe how to install Bazaar but it's usually very
20
 
easy. You can find installation instructions at:
21
 
 
22
 
- **GNU/Linux:** Bazaar is probably in your GNU/Linux distribution already.
23
 
- **Windows:** `installation instructions for Windows`_.
24
 
- **Mac OS X:** `installation instructions for Mac OS X`_.
25
 
 
26
 
For other platforms and to install from source code, see the Download_
27
 
and Installation_ pages.
28
 
 
29
 
.. _installation instructions for Windows: http://wiki.bazaar.canonical.com/WindowsDownloads
30
 
.. _installation instructions for Mac OS X: http://wiki.bazaar.canonical.com/MacOSXBundle
31
 
.. _Download: http://wiki.bazaar.canonical.com/Download
32
 
.. _Installation: http://wiki.bazaar.canonical.com/InstallationFaq
33
 
 
34
 
 
35
 
Introducing yourself
 
18
See http://bazaar-vcs.org/Download. Bazaar is probably in your GNU/Linux
 
19
distribution already. If not, it's trivial to install on any platform that
 
20
runs Python 2.4, including Windows. Installation should take at most a few
 
21
minutes.
 
22
 
 
23
 
 
24
Introducing Yourself
36
25
====================
37
26
 
38
 
Bazaar records changes to source code, and it records who made the change.
39
 
The person is identified by their name and email address.  (If you're
40
 
concerned about spam, you don't need to use a real address that you
41
 
actually read, but the convention is that it looks like an email address.)
42
 
 
43
 
Before you start working, let's tell Bazaar who you are.  Using your name
44
 
and email address, instead of John Doe's, type::
45
 
 
46
 
  $ bzr whoami "John Doe <john.doe@gmail.com>"
47
 
 
48
 
You can check what identity is stored in Bazaar's configuration::
 
27
You want Bazaar to correctly identify you in revision logs. Using your name
 
28
and email instead of Joe Doe's, type::
 
29
 
 
30
  $ bzr whoami "Joe Doe <joe.doe@gmail.com>"
 
31
 
 
32
Now try::
49
33
 
50
34
  $ bzr whoami
51
 
  John Doe <john.doe@gmail.com>
52
 
 
53
 
 
54
 
Starting a new project
55
 
======================
56
 
 
57
 
Let's suppose we want to store a new project under Bazaar.  First, we'll
58
 
make a *repository directory* to hold all our work related to this
59
 
project, where developers can create branches to test development of
60
 
specific features or, more generally, modifications to the working file
61
 
set.  
62
 
 
63
 
After creating the repository, change to that directory, and create the
64
 
project's main trunk branch.
65
 
 
66
 
::
67
 
 
68
 
  bzr init-repo sample
69
 
  cd sample
70
 
  bzr init trunk
71
 
  cd trunk
72
 
 
73
 
 
74
 
Adding files
75
 
============
76
 
 
77
 
Now that we have the trunk, we need to move to that directory and
78
 
create some example files for the first version of that project.  Create
79
 
a file ``test1.txt`` using a text editor (like emacs, nano, or notepad),
80
 
and save it.  Then we'll "add" the file, which tells bzr we want it to
81
 
track changes::
82
 
 
83
 
  bzr add test1.txt
84
 
 
85
 
and then commit, which saves a snapshot of all versioned files::
86
 
 
87
 
  bzr commit -m "Added first line of text"
88
 
 
89
 
 
90
 
Making changes to your files
91
 
============================
92
 
 
93
 
 
94
 
Let's change a file and commit that change to your branch.
95
 
 
96
 
Edit ``test1.txt`` in your favourite editor, then check what have you done::
97
 
 
98
 
 $ bzr diff
99
 
 === modified file 'test1.txt'
100
 
 --- test1.txt   2007-10-08 17:56:14 +0000
101
 
 +++ test1.txt   2007-10-08 17:46:22 +0000
102
 
 @@ -0,0 +1,1 @@
103
 
 +test test test
104
 
 
105
 
Commit your work to the Bazaar branch::
106
 
 
107
 
  $ bzr commit -m "Added first line of text"
 
35
  Joe Doe <joe.doe@gmail.com>
 
36
 
 
37
 
 
38
Putting Existing Files Under Version Control
 
39
============================================
 
40
 
 
41
It is very easy to put an existing set of files under version control using
 
42
Bazaar::
 
43
 
 
44
  $ cd my-project
 
45
  $ bzr init .
 
46
  $ bzr add
 
47
  $ bzr commit -m "Initial import"
 
48
 
 
49
You can now make changes, track them, publish your branch and so on as
 
50
explained below.
 
51
 
 
52
 
 
53
Creating A Personal Branch
 
54
==========================
 
55
 
 
56
Rather than starting a new project, you may wish to work on an existing
 
57
project either you or someone else has published.
 
58
 
 
59
Create a branch of an existing project::
 
60
 
 
61
  $ bzr branch http://example.com/code/foobar.dev foobar.joe
 
62
  Branched 1 revision(s).                                                        
 
63
 
 
64
Note that after you create a personal branch, you don't need web access to
 
65
commit changes.
 
66
 
 
67
 
 
68
Making Changes
 
69
==============
 
70
 
 
71
Edit a file::
 
72
 
 
73
  $ cd foobar.joe
 
74
  $ hack...
 
75
 
 
76
Check what have you done::
 
77
 
 
78
  $ bzr diff
 
79
  === modified file 'foo.c'
 
80
  --- foo.c
 
81
  +++ foo.c
 
82
  @@ -30,6 +30,7 @@
 
83
 
 
84
   #include "foo.h"
 
85
 
 
86
  +
 
87
   static PyObject *
 
88
   _pyfribidi_log2vis (PyObject * self, PyObject * args, PyObject * kw)
 
89
   {
 
90
 
 
91
Commit your hard work::
 
92
 
 
93
  $ bzr commit -m 'added some whitespace'
108
94
  Committed revision 2.
109
95
 
110
96
 
111
 
Viewing the revision log
 
97
Viewing the Revision Log
112
98
========================
113
99
 
114
 
You can see the history of your branch by browsing its log::
 
100
Browse the history of the branch::
115
101
 
116
102
  $ bzr log
117
103
  ------------------------------------------------------------
118
104
  revno: 2
119
 
  committer: John Doe <john.doe@gmail.com>
120
 
  branch nick: myproject
121
 
  timestamp: Mon 2007-10-08 17:56:14 +0000
 
105
  committer: Joe Doe <joe.doe@gmail.com>
 
106
  branch nick: foobar.joe
 
107
  timestamp: Mon 2006-02-06 01:33:35 +0200
122
108
  message:
123
 
    Added first line of text
 
109
    added some whitespace
124
110
  ------------------------------------------------------------
125
111
  revno: 1
126
 
  committer: John Doe <john.doe@gmail.com>
127
 
  branch nick: myproject
128
 
  timestamp: Mon 2006-10-08 17:46:22 +0000
 
112
  committer: James Hacker <jmh@example.com>
 
113
  branch nick: foobar.dev
 
114
  timestamp: Mon 2006-02-06 01:06:11 +0200
129
115
  message:
130
 
    Initial import
131
 
 
132
 
 
133
 
Publishing your branch on Launchpad
134
 
===================================
135
 
 
136
 
Launchpad is a suite of development and hosting tools for
137
 
software projects. You can use it to publish your branch.  (You can 
138
 
also publish branches onto your own server or other hosting services.)
139
 
 
140
 
If you don't have a Launchpad account, follow the `account signup guide`_
141
 
and `register an SSH key`_ in your new Launchpad account.
142
 
 
143
 
.. _account signup guide: https://help.launchpad.net/CreatingYourLaunchpadAccount
144
 
.. _register an SSH key: https://launchpad.net/people/+me/+editsshkeys
145
 
 
146
 
Replacing ``john.doe`` with your own Launchpad username, type::
147
 
 
148
 
 $ bzr push lp:~john.doe/+junk/myproject
149
 
 
150
 
**Note**: ``+junk`` is a place to store experimental branches not
151
 
associated with any particular project.  Normally, you should push a
152
 
project into an existing project, or register a new project through the
153
 
web interface.
154
 
 
155
 
Now, anyone can create their own copy of your branch by typing::
156
 
 
157
 
 $ bzr branch lp:~john.doe/+junk/myproject
158
 
 
159
 
You can also see information about your branch, including its revision
160
 
history, at https://code.launchpad.net/people/+me/+junk/myproject
161
 
 
162
 
 
163
 
Creating your own copy of another branch
164
 
========================================
165
 
 
166
 
To work with someone else's code, you can make your own copy of their
167
 
branch. Let's take a real-world example, Bazaar's GTK interface::
168
 
 
169
 
  $ bzr init-repo ~/bzr-gtk
170
 
  $ bzr branch lp:~bzr/bzr-gtk/trunk ~/bzr-gtk/john
171
 
  Branched 292 revision(s).
172
 
 
173
 
Bazaar will download all the files and complete revision history from the
174
 
bzr-gtk project's trunk branch and create a copy called ``john``.
175
 
 
176
 
Now, you have your own copy of the branch and can commit changes with
177
 
or without a net connection. You can share your branch at any time by
178
 
publishing it and, if the  bzr-gtk team want to use your work, Bazaar
179
 
makes it easy for them to merge your branch back into their trunk branch.
180
 
 
181
 
 
182
 
Updating your branch from the main branch
 
116
    initial revision
 
117
 
 
118
 
 
119
Updating Your Branch from the Main Branch
183
120
=========================================
184
121
 
185
 
While you commit changes to your branch, it's likely that other people will
186
 
also continue to commit code to the parent branch.
187
 
 
188
 
To make sure your branch stays up to date, you should merge changes from
189
 
the parent into your personal branch::
 
122
While you work hard on your branch, others may have committed new code to the
 
123
main branch. From time to time, you want to merge changes from the main
 
124
branch into your branch::
190
125
 
191
126
  $ bzr merge
192
 
  Merging from saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk
 
127
  Using saved location: http://example.com/code/foobar.dev
193
128
  All changes applied successfully.
 
129
            
 
130
What was changed locally by merging the main branch?
194
131
 
195
 
Check what has changed::
 
132
::
196
133
 
197
134
  $ bzr diff
198
 
 
199
 
If different branches have made changes to the same areas of the same
200
 
files, then merging them may generate conflicts.  When this happens,
201
 
Bazaar puts text markers like ``<<<<<<<`` into the files, and records them
202
 
in a list of conflicted files.  You should edit the files to reflect the
203
 
way you want to resolve the conflicts, use ``bzr diff`` to check the
204
 
changes, and then ``bzr resolve`` to mark them as resolved.
205
 
 
206
 
If you're happy with the changes, you can commit them to your personal
207
 
branch::
208
 
 
209
 
  $ bzr commit -m "Merge from main branch"
210
 
  Committed revision 295.
211
 
 
212
 
 
213
 
Learning more
 
135
  === modified file 'pyfribidi.c'
 
136
  --- pyfribidi.c
 
137
  +++ pyfribidi.c
 
138
  @@ -236,6 +236,7 @@
 
139
          PyMem_Del (logical);
 
140
          PyMem_Del (visual);
 
141
   
 
142
  +    /* evil hack! */
 
143
          return result;
 
144
   }
 
145
 
 
146
Commit the changes from the main branch::
 
147
 
 
148
  $ bzr commit -m 'merge from main branch'
 
149
  Committed revision 6.
 
150
 
 
151
Note that you may occasionally need to resolve conflicts or make other minor
 
152
changes (so tests pass say) before committing. For these reasons, merge does
 
153
not implicitly commit.
 
154
 
 
155
 
 
156
Publishing Your Branch
 
157
======================
 
158
 
 
159
You can simply use rsync to copy your branch to a web server, but using
 
160
``bzr push`` is the easiest way. Let's assume you want to publish your
 
161
branch in jod.example.com/foobar.joe and you have sftp access to the server::
 
162
 
 
163
  $ bzr push sftp://jod@jod.example.com/public_html/foobar.joe/
 
164
  2 revision(s) pushed.
 
165
    
 
166
Note that to use sftp, your may need to install ''paramiko'' and ''pyCrypto''.
 
167
See http://bazaar-vcs.org/InstallationFaq for details.
 
168
 
 
169
Now anyone can get your branch with (try it yourself!)::
 
170
 
 
171
  bzr branch http://jod.example.com/foobar.joe/
 
172
 
 
173
 
 
174
Learning More
214
175
=============
215
176
 
216
 
You can find out more about Bazaar in the
217
 
`Bazaar User Guide <../user-guide/index.html>`_.
218
 
 
219
 
To learn about Bazaar on the command-line::
 
177
To learn about bzr topics::
220
178
 
221
179
  $ bzr help
222
180
 
 
181
To learn about bzr commands::
 
182
 
 
183
  $ bzr help commands
 
184
 
223
185
To learn about the ''foo'' topic or command::
224
186
 
225
187
  $ bzr help foo
226
188
 
227
 
Licence
228
 
=======
229
 
 
230
 
Copyright 2007-2011 Canonical Ltd. Bazaar is free software, and you
231
 
may use, modify and redistribute both Bazaar and this document under
232
 
the terms of the GNU General Public License version 2 or later. See
233
 
<http://www.gnu.org/licenses/>.
 
189
Alternatively, browse the `Bazaar Documentation <../../index.html>`_.