Mercurial - наша система контроля версий
Зачем нужна система контроля версий?
Ручное управление несколькими версиями для одного файла — рутинная задача с возможностью ошибок, что уж говорить, когда речь идет о десятка, сотнях или тысячах файлов, которые используются в наших SugarCRM проектах. Для автоматизации этого процесса были созданы программные инструменты, которые называются системами контроля версий (VCS, Version control system). Вот несколько популярных из них: Git, Mercurial, Subversion, CVS.
Есть ряд причин, по которым может потребоваться использовать автоматизированную систему контроля версий для ведения проектов:
- Она будет отслеживать историю и прогресс вашего проекта вместо вас. Для каждого изменения у вас будет запись о том, кто его сделал, почему он это сделал, когда он это сделал и в чем, собственно, заключалось изменение.
- Когда вы работаете с другими людьми, система контроля версий облегчает вам взаимодействие. Например, когда несколько человек делают потенциально конфликтные изменения одновременно, программа поможет вам определить и разрешить такие конфликты.
- Она может помочь вам восстановиться после ошибок. Если вы сделаете изменение, которое потом окажется ошибкой, вы сможете вернуться к более ранней версии одного или нескольких файлов. На самом деле,действительно хорошая система контроля версий даже поможет вам легко найти тот момент времени, когда проблема впервые появилась.
- Она поможет вам работать одновременно над несколькими версиями проекта и переключаться между ними.
Почему мы выбрали Mercurial?
Мы выбрали Mercurial потому что он:
- Прост в изучении и использовании
- Легковесный
- Превосходно масштабируется
- Имеет хорошую поддержку процесса слияния
Из перечисленных преимуществ Mercurial основное преимущество для нас - хорошая поддержка процесса слияния. Именно это и позволяет нам на основе одного единственного главного репозитория SugarCRM, строить проекты в зависимости от редакции ("SugarCRM Старт", "SugarCRM Профи", "SugarCRM Премиум"), адаптируя под нужды клиента.
Кроме того, при создании полезного модуля в SugarCRM, мы добавляем его в гланый репозиторий. А Mercurial позволяет выполнением нескольких команд, добавить его в репозиторий нужной редакции и в репозиторий разрабатываемого проекта.
Если же мы обнаруживаем какие-либо неполадки в модуле, исправив их, мы легко можем распостранить эти правки по всем репозиториям, где используется данный модуль.
Используя ветвления, мы можем разрабатывать сложные модули (разработка сложно модуля может длиться и по несколько недель), не блокируя репозиторий проекта. И, если потребуется срочно внести правки в текущую версию проекта, можно переключиться на главную ветку и без проблем сделать изменения и затем закачать их на сервер: текущая работа по разработке модуля не будет помехой. После чего можно продолжить разработку сложного модуля.