====================== Bazaar за пять минут ====================== .. contents:: Содержание Введение ======== Bazaar |--| это распределенная система контроля версий, которая упрощает совместную работу над программными проектами. В течении следующих пяти минут, вы узнаете как начать контролировать версии ваших файлов, как вносить изменения, проверять вашу работу, публиковать её и отправлять для объединения с главной веткой проекта. Если вы предпочитаете более подробное введение, обратитесь к разделу `Узнать больше`_. Установка ========= Это руководство не описывает как установить Bazaar, потому что обычно это очень легко. Инструкции по установке вы найдете тут: - **GNU/Linux:** скорее всего Bazaar уже присутствует в вашем дистрибутиве GNU/Linux. - **Windows:** `инструкции по установке для Windows`_. - **Mac OS X:** `инструкции по установке для Mac OS X`_. Для других платформ и для установки из исходных кодов, обратитесь к страницам Загрузка_ и Установка_. .. _инструкции по установке для Windows: http://wiki.bazaar.canonical.com/WindowsDownloads .. _инструкции по установке для Mac OS X: http://wiki.bazaar.canonical.com/MacOSXBundle .. _Загрузка: http://wiki.bazaar.canonical.com/Download .. _Установка: http://wiki.bazaar.canonical.com/InstallationFaq Представьтесь ============= Прежде чем начать работать, было бы неплохо сообщить Bazaar кто вы такой. В этом случае ваша работа будет корректно идентифицирована в истории ревизий. Используя ваше имя и адрес электронной почты, вместо данных Васи Пупкина, наберите:: $ bzr whoami "Vasya Pupkin " В этот момент Bazaar создаст или исправит файл настроек, включив в него ваше имя и адрес электронной почты. Теперь, проверьте правильно ли сохранены ваши имя и адрес:: $ bzr whoami Vasya Pupkin Начинаем контролировать версии файлов ===================================== Давайте создадим каталог и несколько файлов для использования с 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://wiki.bazaar.canonical.com/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 branch nick: myproject timestamp: Mon 2007-10-08 17:56:14 +0000 message: Добавлена первая строка текста ------------------------------------------------------------ revno: 1 committer: Vasya Pupkin 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://wiki.bazaar.canonical.com/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