Попробовал bzr и остался весьма доволен.
Что же из себя представляет Bazaar? Bzr – распределенная система контроля версий. После SVN такой термин не совсем понятен. И зачем на что-то переходить когда и SVN отлично работает?
Распределенная система контроля версий не привязана к серверу. Что случится если в процессе работы над проектом теряется свзять с svn-сервером? Система рассчитана на обязательное его наличие. Как результат – работаем дальше без истории изменений.
А что же дает bzr?
Локальные коммиты. Используя его мы можем сделать bzr commit –local, и так у нас будет история и версионность. Локально. И при появлении сервера можно вновь делать коммиты на него.
Привязка-отвязка от сервера. Можно сделать чекаут, отвязать его от сервера. Например, при поездке куда-то.
Наш репозитарий может служить репозитарием для других. Так, можно иметь рабочий репозитарий для проектов, и репозитарий для активной разработки. После того как development-версия оттестирована можно делать коммит в рабочий репозитарий. Такое дополнительное звено для проверки работоспособности.
Собственно, существуют и другие подобные системы – git, mercurial. Но bzr считается самым дружественным. Далее на примере это можно будет увидеть
Итак, создание репозитария происходит командой bzr init-repository.
New branches created under the repository directory will store their revisions in the repository, not in the branch directory.
Создание проекта в нем – bzr init
Use this to create an empty branch, or before importing an existing project.
If there is a repository in a parent directory of the location, then the history of the branch will be stored in the repository.
Otherwise init creates a standalone branch which carries its own history in the .bzr directory.
Теперь на локальной машинке давайте создадим проект на rails:
и сделаем чекаут:
Отлично. Теперь у нас есть папка .bzr в корне проекта. Прежде чем делать добавления в проект давайте пропишем маски для исключений. Это делается легко и просто =)
bzr ignore "tmp/*"
Мне кажется, это приятней и понятней чем в svn. Кроме того, в корне проекта появился файлик .bzrignore, в который можно дописывать маски.
Если в маске встречается символ “/” то путь определяется от корня проекта. Например, вложенная где-нибудь папка log будет добавлена в репозитарий со всем содержимым. Для такого случая есть префикс “/**/logs/*.log”.
Отлично, теперь в корне проекта сделаем
bzr commit -m "initial import"
и наши файлы ушли в репозитарий. Все, можно работать.
Чтобы не делать много мелких несущественных коммитов можно делать их локально – “bzr commit –local”.
Более подробный мануал по bzr иожно найти на оффсайте.