Кирилл Данилов (donz_ru) wrote,
Кирилл Данилов
donz_ru

DVCS и в частности Bazaar для самых ленивых

На первый взгляд странно, но в индустрии IT, наверное одной из самых динамичных, большинство людей - ретрограды. Идее DVCS в этом году исполняется десять лет, при этом SVN до сих пор является самой популярной VCS. Вообще, я тоже принадлежу к тем, кто десять раз подумает, прежде чем кидаться на что-то новое. И считаю это правильным, так как для совершения нетривиальных действий нужна аргументация, большая чем "это модно, все переходят на XXX". Но в очередной раз наткнувшись на статью о распределенных системах контроля версий пересилил лень и решил попробовать, о чем ни разу не жалею.
Итак, что такое DVCS и чем они полезны для тех, кто еще не поинтересовался самостоятельно:

- КО подсказывает, что основная фича DVCS - распределенность. Это означает отсутствие необходимости центрального хранилища кода в каждый момент (а при желании и вообще жить без центра). Разработчик может совершать все возможные VCS'ные действия с кодом локально без постоянных коммитов на сервер и ожидания конфликтов. Дошли до логического завершения задачи, тогда можно скинуть все локальные коммиты в центральное хранилище, разрулив коллизии один раз (при чем это скорее всего будет проще, чем с SVN, о чем ниже). А можно скинуть другому разработчику, или в хранилище посередине, которым пользуется одна из многих команд, работающих над проектом.

- Более легкое разрешение конфликтов. В Subversion для каждой копии проекта (бранч, таг, транк, локальная копия) хранится весь слепок (snapshot), и VCS не запоминает, с какая была ревизия при создании слепка. В случае мерджа нам необходимо вручную указать, какие ревизии хотим слить, и все равно получаем ситуацию "стенка на стенку" для всех коммитов из заданного диапазона. В DVCS ревизии хранятся и обмениваются между пирами только в виде changeset'ов, содержащих непосредственно сами изменения. При этом для двух бранчей, которые мы хотим объединить, можно легко найти последнюю общую ревизию, с которой начались расхождения. Проблему параллельного изменения одного и того же участка файла это, конечно, не решает, но жить становится намного легче.

- Сам себе сервер, сам себе клиент. Скачиваете дистрибутив, ГУИ к нему и получаете полноценную систему контроля версия на локальном компьютере. Все. Никаких постоянно висящих в памяти демонов и настроек репозиториев на серверной стороне. Для скачивания/закачивания изменений с других участников проекта можно выбрать один из множества стандартных протоколов: file://, http://, ftp://. Хотя при желании можно поставить заточенный под конкретную DVCS сервер, но это уже становится необязательным. И при желании его можно легко устранить.

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

Почему Bazaar? Доходчиво объяснено в этой статье.
Вкратце:
-Bazaar работает с SVN сервером, как с родным. Так что на работе все парятся с SVN, я наслаждаюсь локальными коммитами и сливаю изменения, когда дохожу до логического конца задачи, а не накапливаю их одним большим куском, надеясь, что не понадобится ролбэк.
-В качестве метаданных используется только один каталог в корне проекта. Больше никаких фильтров, игнорирующих каталоги subversion'а по маске.

Для меня эти два пункта стали определяющими при выборе конкретной реализации DVCS. Хотя Git и Mercurial более популярны, отсутствие плясок с бубном для интеграции с уже существующим SVN решает все.

Конечно, есть у проекта и проблемы (настройка прокси через переменные окружения, скан всего репозитория SVN при инициализации хранилища и некоторые другие), но все уже исследовано, запротоколировано и отправлено разработчикам :)

В общем, пробуйте. Категорически рекомендую.
Tags: bazaar, dvcs, it, программирование
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments