Распределённая система контроля версий Bazaar (Bzr)

Bazaar является достаточно дружественным к пользователям, переходящим на него с Subversion. В частности, почти все команды сохраняются (status, update, checkout, commit, revert, diff, add, mv, rm, mkdir, ...) и имеют (в отличие от git) практически тот же самый смысл.

Новые команды:

  • init (создает пустой репозитарий)
  • branch (создает новый репозитарий на основе существующего, в т.ч. удаленного)
  • push (проталкивает изменения в основной репозитарий)
  • pull (забирает изменения из основного репозитария)

Как и у svn, в bzr численная, последовательная нумерация коммитов в пределах бранча. 1 бранч == 1 репозитарий, для хранения мноржества бранчей используется специальная форма shared repository (в который складываются все остальные репозитарии).

Основная документация

 http://doc.bazaar.canonical.com/bzr.2.0/ru/

Установка плагина для WebDAV

Если его нет в репозитории вашего дистрибутива, то его надо поставить. В убунте есть пакет bzr-webdav, но, например, в 10.04 он для старого базара, поэтому в убунте начать следует с sudo apt-get remove bzr-webdav.

rm -rf ~/.bazaar/plugins/webdav
mkdir -p ~/.bazaar/plugins/
bzr branch lp:bzr.webdav ~/.bazaar/plugins/webdav

Для винды:

bzr branch lp:bzr.webdav "C:\Program Files\Bazaar\plugins\webdav"

Теперь можно исподьзовать протокол http+webdav:

bzr clone http+webdav://dev.iu7....

Основные косяки

  • Установите push_location в файле .bzr/branch/branch.conf репозитория.
  • При отсутствии прав на запись в профиль пользователя (машинные залы УЛК) надо давать команду bzr whoami с параметром --branch (отдавать её надо в каталоге локальной копии репозитория, разумеется).

Другие полезные плагины

(ставятся аналогично, в ~/.bazaar/plugins)

  • automv: добавляет команду bzr automv, которая отслеживает переименованные (в обход bzr) файлы
  •  lessdiff: добавляет команду bzr lessdiff, выводяющую diff с подсветкой.
  •  QBzr: добавляет ряд команд (qlog, qdiff, и тп) для просмотра журнала, диффов из GUI

Полезные настройки Bazaar

Конфигурация хранится в ~/.bazaar/bazaar.conf

Группа [DEFAULT]

  • email - ваш емейл (будет появляться в коммит-логах)

Группа [ALIASES]

Позволяет задать короткие алиасы команд. Например, так

[ALIASES]
ci = commit --strict --show-diff
st = status -S
ll = log --short -l 10
di = lessdiff
last = cdiff -r-2..-1
br = branch
tip = log -r-1

Игнорируемые файлы по умолчанию

Начальный список игнора хранится в ~/.bazaar/ignore Например:

*.a
*.o
*.py[co]
*.so
*.sw[nop]
*~
.*
[#]*#

Автоматическая авторизация

В ~/.bazaar/authentication.conf можно добавить логины/пароли используемых серверов, чтобы не вводить их каждый раз. Он имееет следующий вид:

[iu7]
scheme=http
host=dev.iu7.bmstu.ru
path=/bzr/
user=мойлогин
password=майпароль

[DEFAULT]
user=мойлогинпоумолчанию

Примечание: здесь именно http, а не http+webdav.