среда, 25 февраля 2009 г.

bzr help: встроенная справочная служба класса "люкс" (Часть 1)

Любому пользователю bzr (от новичка до профи) время от времени нужна справочная информация: всего не упомнишь, всех нюансов в голове не удержишь, тем более если речь идет о мало используемых или незнакомых командах и опциях. В таких ситуациях нужно помнить главное: справка у вас всегда под руками. И я говорю не про man bzr, а про встроенный механизм справки, вызываемый по команде bzr help. Команда bzr help, помимо очевидных вещей типа справки к командам и опциям, имеет также неплохой каталог дополнительной справочной информации о базовых концепциях, настройках и конфигурации bzr, и даже такой материал как объяснение типов конфликтов объединения и как с ними бороться. Должен сказать, что разработчики bzr уделяют справке внимание, что положительно сказывается на ее количестве и качестве. Многие пункты справки содержат информации на несколько экранов, так что для удобства чтения используйте программы типа more или less.
Полезный совет для пользователей Windows: скачайте и установите программу less, которая значительно превосходит по функциональности стандартную more. После установки добавьте папку с программой в список в переменную окружения PATH.
Итак, посмотрим, что же может предложить bzr help. Запускаем и видим краткую сводку по базовым командам:
C:\>bzr help
Bazaar -- a free distributed version-control tool
http://bazaar-vcs.org/

Basic commands:
bzr init           makes this directory a versioned branch
bzr branch         make a copy of another branch

bzr add            make files or directories versioned
bzr ignore         ignore a file or pattern
bzr mv             move or rename a versioned file

bzr status         summarize changes in working copy
bzr diff           show detailed diffs

bzr merge          pull in changes from another branch
bzr commit         save some or all changes
bzr send           send changes via email

bzr log            show history of changes
bzr check          validate storage

bzr help init      more help on e.g. init command
bzr help commands  list all commands
bzr help topics    list all help topics
Команды сгруппированы по назначению:
  • init, branch — создание новой ветки с нуля или путем клонирования существующей
  • add, ignore, mv — процесс добавления файлов под контроль версий, информирование об игнорируемых объектах, переименование через bzr
  • status, diff — просмотр изменений в файлах
  • merge, commit, send — фиксация изменений (commit), объединений изменений в двух ветках (merge), отправка патчей по электронной почте (send)
  • log — просмотр истории изменений
Ниже вы видите пример того, как получить справку по конкретной команде — например, вызывая bzr help init либо используя опцию -h или --help после имени команды: bzr init -h. Для того, чтобы получить список всех доступных команд, запустите bzr help commands; рекомендую использовать less для просмотра:
bzr help commands | less
Будет выведен список всех команд в алфавитном порядке с кратким описанием для каждой команды. Обратите внимание на команду bzr help topics.
Эта команда выводит оглавление всех доступных материалов встроенной справки в виде списка: слева названия статей, справа — краткое описание материала. Ниже приведены первые несколько строк из списка статей (для bzr 1.12):
C:\>bzr help topics
authentication       Information on configuring authentication
basic                Basic commands
branches             Information on what a branch is
bugs                 Bug tracker settings
checkouts            Information on what a checkout is
commands             Basic help for all commands
configuration        Details on the configuration settings available
conflicts            Types of conflicts and what to do about them
Используйте название статьи для доступа к ее тексту. Например, команда
bzr help configuration
выведет справку по имеющимся настройкам для bzr. Во второй части мы рассмотрим подробнее назначение дополнительных полей справочной информации.

вторник, 24 февраля 2009 г.

Настройки bzr: whoami или как меня зовут

После установки bzr сразу можно приступать к работе, однако стоит потратить пару минут на настройку некоторых важных параметров. Одним из таких параметров является ваша личная идентификация. Другими словами — ваше имя, ваш идентификатор для bzr. Это имя будет использоваться bzr для подписывания изменений, которые вы будете фиксировать. И поскольку история ваших фиксаций будет оставаться неизменной все время, то стоит позаботиться о том, чтобы ваше имя отображалось правильно. Чтобы узнать ваш текущий идентификатор используйте команду:
bzr whoami
Запущенная без параметров эта команда для типичного Василия Пупкина, работающего на своем домашнем компьютере, выведет нечто похожее на:
vasya@home
Если подобный идентификатор вас устраивает, то можете ничего не менять. Иначе задайте свое настоящее имя при помощи этой же команды whoami, но с соответствующим аргументом:
bzr whoami "Василий Пупкин <vasya.pupkin@gmail.com>"
Здесь в кавычкаx задается имя и дополнительно может задаваться электронный почтовый адрес (в угловых скобках). Проверим установки:
$ bzr whoami Василий Пупкин <vasya.pupkin@gmail.com>
Настройка вашего идентификатора сохраняется в файле глобальных настроек bazaar.conf (в вашем домашнем каталоге). Этот идентификатор будет использоваться для фиксации всех веток. О том, как задать отличающийся идентификатор для некоторых веток будет рассказано в следующих статьях.

понедельник, 23 февраля 2009 г.

Установка bzr

Для установки bzr в вашей системе нужно выбрать соответствующий пакет или дистрибутив из перечисленных на странице Download.
Кратко рассмотрим варианты установки для различных операционных систем.

Установка из исходных кодов

Система контроля версий Bazaar написана на языке программирования Python (Питон), что облегчает ее установку и использование: достаточно иметь установленный интерпретатор языка Python в вашей системе (версии 2.4–2.6, рекомендуется 2.5). Опытные пользователи Python могут использовать стандартное "заклинание": python setup.py install для установки. Более подробно об опциях установки можно прочитать в файле INSTALL.

Установка для ОС Linux

Для большинства популярных дистрибутивов Linux имеются готовые пакеты для установки bzr. Каждый конкретный дистрибутив имеет свои особенности, поэтому ознакомьтесь с детальными инструкциями  на странице DistroDownloads.

Если вы используете Ubuntu Linux, то скорее всего bzr уже будет установлен в вашей системе. Однако вам имеет смысл ознакомиться с процессом обновления bzr, для того, чтобы регулярно устанавливать свежую версию. Разработка bzr идет достаточно интенсивно и примерно каждый месяц выпускается новая версия. Новые версии как правило работают быстрее и содержат значительное количество исправлений известных ошибок.

Установка для ОС Windows

Наиболее оптимальным и рекомендуем способом установки bzr в ОС Windows является использование инсталлятора автономной версии (Windows Standalone Installer). Автономная версия содержит скомпилированную программу bzr.exe для Windows, и поставляется с набором всех необходимых библиотек. Также инсталлятор автономной версии предлагает установить набор популярных плагинов для bzr, а также программу TortoiseBzr, которая предоставляет интеграцию bzr-команд в Explorer.

Альтернативным вариантом установки является использование инсталляторов питон-версии bzr (python installer). Для работы питон-версии вам потребуется установленный интерпретатор Python (версии 2.4–2.6, рекомендуется 2.5), а также набор дополнительных библиотек. См. http://bazaar-vcs.org/WindowsInstall для дополнительных инструкций.

В большинстве случаев выбор автономной версии bzr.exe — это оптимальный вариант. Однако, если вам понадобится интегрировать bzr с другими питон-программами, то установка питон-версии может оказаться единственным работающим вариантом.

Установка для ОС Mac OS X

Для компьютеров фирмы Apple также имеются готовые инсталляторы, а также специальные репозитории портированных программ: MacPorts и Fink. См. ссылки на подробные инструкции на странице Download.

Bazaar: зачем и почему

Сегодня о распределенных системах контроля версий слышали и знают многие. Несмотря на то, что svn по-прежнему лидирует и все еще является наиболее часто используемой системой контроля версий (особенно в корпоративном секторе), однако распределенные системы нового поколения продолжают набирать популярность.

К распределенным системам нового поколения относят Git (Гит), Mercurial (Меркуриал) и Bazaar (Базар). Все три системы появились на свет более-менее в одно время (конец 2004 – начало 2005 года). Список современных распределенных систем контроля версий также дополняют Darcs и Monotone.

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

Развитию распределенных систем контроля версий способствуют два основных фактора:
  • бурное развитие глобальной сети интернет
  • наличие доступных по цене переносных компьютеров (ноутбуков и нетбуков)
Первый фактор способствует образованию множества географически распределенных команд, работающих над одним проектом; в первую очередь это касается проектов с открытым кодом (Open source projects). Второй фактор позволяет разработчикам использовать долгие путешествия (поезд, самолет) для того, чтобы продолжать работать над своими проектами. Поскольку полная копия репозитория всегда доступна локально (на жестком диске компьютера разработчика) и практически все операции можно делать без соединения с сервером, то это с одной стороны позволяет достичь более высокой скорости работы, а с другой стороны работать в условиях отсутствия подключения к сети.

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

Гит и Меркуриал изначально создавались для работы над ядром операционной системы Linux (Линукс), поэтому одним из главных требований для них была возможность адекватной работы с набором файлов с исходными кодами Линукс. Одной из главных целей при этом стало достижение максимальной скорости работы с огромным количеством файлов.

Базар же изначально проектировался как замена распределенной системы контроля версий первого поколения (GNU Arch) и главной целью было создание удобного и дружественного интерфейса пользователя. Оптимизацией скорости работы этой системы начали заниматься несколько позднее, используя в качестве наглядного примера Гит и Меркуриал. В то же время в Базаре изначально большое внимание уделяется идеям расширяемости и обратной совместимости. Одной из ключевых особенностей Базара является привязка уникального идентификатора к каждому версионированному файлу, каталогу или символической ссылке, что позволяет легко и эффективно отслеживать переименования файлов и каталогов. В своем арсенале Базар имеет поддержку для множества различных моделей работы (от полностью распределенной до централизованной), Базар имеет поддержку для работы с репозиториями через множество различных протоколов (локальный файловый доступ, http/https, sftp, ftp, специальный эффективный bzr-протокол). Все это делает Базар очень гибкой системой, способной легко адаптироваться к различным требованиям. Но в то же время эта гибкость может озадачить начинающих пользователей, поскольку требует внимательного изучения руководства пользователя.

В последующих статьях обязательно будет рассказано о разных аспектах использования Базара.
Если же у вас появятся конкретные вопросы по использованию Базара, вы всегда можете задать их в дискуссионной группе ru_bzr.

Об этом блоге

Блог "Базарный день" посвящен вопросам использования распределенной системы контроля версий Bazaar. В этом блоге мы будем рассказывать о различных приемах работы с bzr, тонкостях, хитростях и трюках. Также достаточно времени будем уделять объяснению терминологии. Таким образом блог ориентирован на начинающих и продолжающих пользователей. Надеюсь, что и эксперты смогут подчерпнуть здесь что-то интересное для себя. Либо сами захотят написать о своем опыте. Формат блога ориентирован на относительно короткие статьи-рецепты, которые мы постараемся публиковать примерно раз в неделю. Подписывайтесь на нашу ленту новостей, чтобы всегда узнавать о новых статьях первыми. :-)