~bzr-pqm/bzr/bzr.dev

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
======================
Bazaar за пять минут
======================

.. contents::
     Содержание

Введение
========

Bazaar |--| это распределенная система контроля версий, которая упрощает
совместную работу над программными проектами.

В течении следующих пяти минут, вы узнаете как начать контролировать версии
ваших файлов, как вносить изменения, проверять вашу работу, публиковать её и
отправлять для объединения с главной веткой проекта.

Если вы предпочитаете более подробное введение, обратитесь к разделу 
`Узнать больше`_.

Установка
=========

Это руководство не описывает как установить Bazaar, потому что обычно 
это очень легко. Инструкции по установке вы найдете тут:

- **GNU/Linux:** скорее всего Bazaar уже присутствует в вашем дистрибутиве GNU/Linux.
- **Windows:** `инструкции по установке для Windows`_.
- **Mac OS X:** `инструкции по установке для Mac OS X`_.

Для других платформ и для установки из исходных кодов, обратитесь к страницам 
Загрузка_ и Установка_.

.. _инструкции по установке для Windows: http://bazaar-vcs.org/WindowsDownloads
.. _инструкции по установке для Mac OS X: http://bazaar-vcs.org/MacOSXBundle
.. _Загрузка: http://bazaar-vcs.org/Download
.. _Установка: http://bazaar-vcs.org/InstallationFaq

Представьтесь
=============

Прежде чем начать работать, было бы неплохо сообщить Bazaar кто вы такой. 
В этом случае ваша работа будет корректно идентифицирована в истории ревизий.

Используя ваше имя и адрес электронной почты, вместо данных Васи Пупкина,
наберите::

    $ bzr whoami "Vasya Pupkin <vasya.pupkin@mail.ru>"

В этот момент Bazaar создаст или исправит файл настроек, включив в него ваше
имя и адрес электронной почты.

Теперь, проверьте правильно ли сохранены ваши имя и адрес::

    $ bzr whoami
    Vasya Pupkin <vasya.pupkin@mail.ru>


Начинаем контролировать версии файлов
=====================================

Давайте создадим каталог и несколько файлов для использования с Bazaar::

    $ mkdir myproject
    $ cd myproject
    $ mkdir subdirectory
    $ touch test1.txt test2.txt test3.txt subdirectory/test4.txt

**Замечание для пользователей Windows:** используйте Windows Explorer 
для создания ваших каталогов, затем нажимайте правую кнопку мыши 
в этих каталогах и выбирайте ``Новый файл``, чтобы создать ваши файлы.

Теперь дадим Bazaar возможность инициализировать свои данные в каталоге вашего
проекта::

    $ bzr init

Если всё выглядит так, как будто ничего не случилось |--| не волнуйтесь. Bazaar
создал ветку_, в которой он будет хранить рабочие файлы и историю их изменений.

.. _ветку: http://bazaar-vcs.org/Branch

Следующий шаг |--| сказать Bazaar какие файлы вы хотите контролировать. Команда
``bzr add`` рекурсивно добавит все файлы в проект::

    $ bzr add
    added subdirectory
    added test1.txt
    added test2.txt
    added test3.txt
    added subdirectory/test4.txt

Далее, нужно сохранить текущее состояние ваших файлов зафиксировав их в вашей
ветке. Добавьте сообщение объясняющее зачем вы сделали фиксацию::

	$ bzr commit -m "Импортируем файлы"

Т.к. Bazaar это распределенная система контроля версий, здесь нет необходимости
соединяться с центральным сервером для выполнения фиксации. Вместо этого,
Bazaar сохраняет вашу ветку и все её фиксации внутри каталога с которым вы
работаете; обратите внимание на подкаталог ``.bzr``.


Вносим изменения в файлы
========================

Давайте изменим какой-либо файл и зафиксируем это изменение в вашей ветке.

Отредактируйте ``test1.txt`` в своем любимом редакторе и затем посмотрите на
сделанные изменения::

    $ bzr diff
    === modified file 'test1.txt'
    --- test1.txt 2007-10-08 17:56:14 +0000
    +++ test1.txt 2007-10-08 17:46:22 +0000
    @@ -0,0 +1,1 @@
    +test test test

Зафиксируйте вашу работу в ветке Bazaar::

    $ bzr commit -m "Добавлена первая строка текста"
    Committed revision 2.


Просматриваем журнал изменений
==============================

Вы можете увидеть историю вашей ветки просмотрев её журнал::

    $ bzr log
    ------------------------------------------------------------
    revno: 2
    committer: Vasya Pupkin <vasya.pupkin@mail.ru>
    branch nick: myproject
    timestamp: Mon 2007-10-08 17:56:14 +0000
    message:
      Добавлена первая строка текста
    ------------------------------------------------------------
    revno: 1
    committer: Vasya Pupkin <vasya.pupkin@mail.ru>
    branch nick: myproject
    timestamp: Mon 2006-10-08 17:46:22 +0000
    message:
      Импортируем файлы


Публикуем ветку через SFTP
==========================

Есть несколько способов опубликовать вашу ветку. Если у вас уже есть SFTP
сервер или вам несложно его настроить, вы можете опубликовать свою ветку через
него.

В противном случае, переходите к следующему разделу, чтобы опубликовать ветку
на Launchpad_ |--| бесплатном хостинге для Bazaar.

.. _Launchpad: https://launchpad.net/

Предположим, что вы хотите опубликовать свою ветку на
``www.example.com/myproject``::

    $ bzr push --create-prefix sftp://your.name@example.com/~/public_html/myproject
    2 revision(s) pushed.

Bazaar создаст каталог ``myproject`` на удаленном сервере и поместит в него
вашу ветку.

Теперь любой желающий сможет создать свою собственную копию вашей ветки,
выполнив::

    $ bzr branch http://www.example.com/myproject

**Замечание:** чтобы использовать SFTP, может понадобиться установить
``paramiko`` и ``pyCrypto``. За подробностями обращайтесь к
http://bazaar-vcs.org/InstallationFaq.


Публикация ветки на Launchpad
=============================

Launchpad это набор инструментов для разработки и размещения проектов
свободного программного обеспечения. Вы можете использовать его для публикации
своей ветки.

Если у вас нет учетной записи Launchpad, следуйте 
`руководству по получению учетной записи`_ и `зарегистрируйте SSH ключ`_ 
в своей новой учетной записи.

.. _руководству по получению учетной записи: https://help.launchpad.net/CreatingYourLaunchpadAccount
.. _зарегистрируйте SSH ключ: https://launchpad.net/people/+me/+editsshkeys

Заменив ``vasya.pupkin`` на ваше имя пользователя Launchpad, выполните::

	$ bzr push bzr+ssh://vasya.pupkin@bazaar.launchpad.net/~vasya.pupkin/+junk/myproject

**Замечание:** ``+junk`` означает что ветка не связана с каким-либо проектом на
Launchpad.

Теперь любой желающий сможет создать свою собственную копию вашей ветки,
выполнив::

	$ bzr branch http://bazaar.launchpad.net/~vasya.pupkin/+junk/myproject

Вы также сможете видеть информацию по вашей ветке, включая журнал изменений, по
адресу https://code.launchpad.net/people/+me/+junk/myproject


Создаем собственную копию другой ветки
======================================

Чтобы работать с чьим-либо кодом, вы можете создать собственную копию чужой
ветки. Давайте возьмем реальный пример |--| GTK интерфейс для Bazaar::

    $ bzr branch http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk bzr-gtk.vasya
    Branched 292 revision(s).

Bazaar загрузит все файлы и полный журнал изменений из основной ветки проекта
bzr-gtk и создаст копию с именем bzr-gtk.vasya.

Теперь у вас есть собственная копия ветки и вы можете фиксировать изменения и с
сетевым подключением и без него. Вы можете поделиться своей веткой в любое
время, опубликовав ветку. И если команда разработчиков bzr-gtk захочет
использовать вашу работу, Bazaar легко позволит им объединить вашу ветку
обратно в их основную ветку.

Обновляем ветку изменениями из основной ветки
=============================================

Пока вы фиксируете изменения в вашей ветке, другие люди, скорее всего, так же
продолжают фиксировать код в родительской ветке.

Чтобы быть уверенным что ваша ветка содержит последние изменения, вам следует
объединить родительскую ветку с вашей личной::

    $ bzr merge
    Merging from saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk
    All changes applied successfully.

Проверьте что изменилось::

    $ bzr diff

Если изменения вас устраивают, вы можете зафиксировать их в своей ветке::

    $ bzr commit -m "Изменения из основной ветки"
    Committed revision 295.


Объединяем свои изменения с родительской веткой
===============================================

После того как вы поработали в своей ветке bzr-gtk, вы можете захотеть
отправить ваши изменения для включения в проект. Простейший способ заключается
в использовании директивы объединения.

Директива объединения |--| это машиночитаемый запрос на осуществление
конкретного объединения. Обычно он содержит обзор изменений, которые
планируется объединить. Также директива объединения содержит либо необходимые
ревизии, либо указывает на ветку где они могут быть получены.

Заменив ``mycode.patch``, создайте свою директиву объединения::

    $ bzr send -o mycode.patch
    Using saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk

Теперь вы можете отправить директиву объединения по электронной почте
в проект bzr-gtk. Если разработчики bzr-gtk захотят, то смогут использовать 
эту директиву для включения вашей работы в основную ветку.


Узнать больше
=============

Больше информации о Bazaar вы найдете в 
`Руководстве пользователя Bazaar <../user-guide/index.html>`_.

Чтобы узнать больше о Bazaar из командой строки::

    $ bzr help

Чтобы узнать основные команды Bazaar::

    $ bzr help commands

Чтобы узнать о теме или команде "foo"::

    $ bzr help foo

.. |--| unicode:: U+2014