Bazaar за пять минут

Введение

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

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

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

Установка

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

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

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

Прежде чем начать работать, было бы неплохо сообщить 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 создал ветку, в которой он будет хранить рабочие файлы и историю их изменений.

Следующий шаг — сказать 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.

Предположим, что вы хотите опубликовать свою ветку на 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 ключ в своей новой учетной записи.

Заменив 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.

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

$ bzr help

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

$ bzr help commands

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

$ bzr help foo