инструменты


Не так давно я обосновывал, что git лучше, чем Mercurial. К сожалению, невозможность увязать LDAP-авторизацию иначе, чем через WebDAV, поставила крест на использовании git. WebDAV оказался непригоден для транзакционных операций с большим числом файлов, репозиторий постоянно приходил в некорректное состояние. Примерно через неделю разборок с WebDAV нам надоело жрать этот кактус и было решено использовать Mercurial.

Прошел почти месяц и уже можно твердо сказать, что решение было удачным.

Приятности

  1. По сравнению с SVN лучше практически все: отличная скорость, удобная работа с бранчами.

  2. Никаких проблем интеграции с Trac, все сделано на аналогичном SVN’у уровне

  3. Для одновременной работы с SVN и Mercurial существует отличная утилита hgsvn. Мы ее использовали при импорте истории из SVN, все прошло гладко. В моем домашнем репозитории, правда, возникли мелкие проблемы с распознаванием кодировок, до решения которых пока не дошли руки.

  4. Для Windows существует достаточно приятный TortoiseHg. Лично мне удобнее работать с клиентом командной строки, зато Tortoise обеспечивает удобный интерфейс для просмотра логов. На *nix визуальный показ лога входит в ядро Mercurial и вызывается командой hg view.

  5. Mercurial действительно оказался значительно проще в изучении, чем git.

Потенциальные проблемы

Основная проблемная область при переходе c SVN на Mercurial — работа с бранчами и все что с ней связано. Это очень мощная и полезная функциональность, но при неаккуратном использовании может получиться вот такая лапша:

Mercurial branch spaghetti

На картинке вы видите последствия одного коммита в неправильный бранч и последовавший процесс исправления этих последствий.

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

Мелочи, на которые стоит обратить внимание:

  • hg push требует флага -f при создании новой “головы”, даже если вы работаете в рамках давно существующего бранча.

  • После мержа все изменения в рабочей копии должны быть закоммичены в рамках одной транзакции. В ряде ситуаций это бывает очень неудобным. Всегда коммитьте все локальные изменения перед мержем!

Материалы

« Previous PageNext Page »