Thu 22 Jan 2009
Mercurial, полет нормальный
Posted by Alex Lebedev under mercurial, инструменты
[4] Comments
Не так давно я обосновывал, что git лучше, чем Mercurial. К сожалению, невозможность увязать LDAP-авторизацию иначе, чем через WebDAV, поставила крест на использовании git. WebDAV оказался непригоден для транзакционных операций с большим числом файлов, репозиторий постоянно приходил в некорректное состояние. Примерно через неделю разборок с WebDAV нам надоело жрать этот кактус и было решено использовать Mercurial.
Прошел почти месяц и уже можно твердо сказать, что решение было удачным.
Приятности
По сравнению с SVN лучше практически все: отличная скорость, удобная работа с бранчами.
Никаких проблем интеграции с Trac, все сделано на аналогичном SVN’у уровне
Для одновременной работы с SVN и Mercurial существует отличная утилита hgsvn. Мы ее использовали при импорте истории из SVN, все прошло гладко. В моем домашнем репозитории, правда, возникли мелкие проблемы с распознаванием кодировок, до решения которых пока не дошли руки.
Для Windows существует достаточно приятный TortoiseHg. Лично мне удобнее работать с клиентом командной строки, зато Tortoise обеспечивает удобный интерфейс для просмотра логов. На *nix визуальный показ лога входит в ядро Mercurial и вызывается командой
hg view.Mercurial действительно оказался значительно проще в изучении, чем git.
Потенциальные проблемы
Основная проблемная область при переходе c SVN на Mercurial — работа с бранчами и все что с ней связано. Это очень мощная и полезная функциональность, но при неаккуратном использовании может получиться вот такая лапша:

На картинке вы видите последствия одного коммита в неправильный бранч и последовавший процесс исправления этих последствий.
Настоятельно рекомендую перед миграцией на Mercurial хотя бы одному члену команды внимательно прочитать документацию. Проблемы в первое время обязательно будут возникать, и кто-то должен уметь их решать. Если вы раньше не работали с распределенными системами контроля версий, то интуиция в решении этих проблем не поможет, нужно будет четкое понимание того, что происходит внутри.
Мелочи, на которые стоит обратить внимание:
hg pushтребует флага-fпри создании новой “головы”, даже если вы работаете в рамках давно существующего бранча.После мержа все изменения в рабочей копии должны быть закоммичены в рамках одной транзакции. В ряде ситуаций это бывает очень неудобным. Всегда коммитьте все локальные изменения перед мержем!
Материалы
TortoiseHg — интеграция Mercurial в “Проводник” Windows
hgsvn — утилита для одновременной работы с Mercurial и SVN
Converting from Subversion to Mercurial — отличное руководство по переносу репозитория из SVN в Mercurial



