rails and bzr
Попробовал 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.[cc lang="bash"]mkdir railsproject && cd railsproject[/cc] Создание проекта в нем - 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: [cc lang="bash"]rails railsproject[/cc] и сделаем чекаут: [cc lang="bash"]bzr checkout bzr+ssh://my.server/home/user/bzr/railsproject/ .[/cc] Отлично. Теперь у нас есть папка .bzr в корне проекта. Прежде чем делать добавления в проект давайте пропишем маски для исключений. Это делается легко и просто =) [cc lang="bash"]bzr ignore "log/*.log" bzr ignore "tmp/*" [/cc] Мне кажется, это приятней и понятней чем в svn. Кроме того, в корне проекта появился файлик .bzrignore, в который можно дописывать маски. Если в маске встречается символ "/" то путь определяется от корня проекта. Например, вложенная где-нибудь папка log будет добавлена в репозитарий со всем содержимым. Для такого случая есть префикс "/**/logs/*.log". Отлично, теперь в корне проекта сделаем [cc lang="bash"]bzr add bzr commit -m "initial import"[/cc] и наши файлы ушли в репозитарий. Все, можно работать. Чтобы не делать много мелких несущественных коммитов можно делать их локально - "bzr commit --local". Более подробный мануал по bzr иожно найти на оффсайте.