Вышла очередная версия Mercurial — распределённой системы управления версиями, написанной на Python.
В числе основных изменений находится ряд усовершенствований, направленных на улучшение производительности.
fsmonitor
Добавлено расширение fsmonitor (ранее известное как «hgwatchman»), разработанное компанией Facebook.
Такие операции, как hg status
, hg diff
, hg commit
должны знать о том, какие файлы в репозитории были изменены.
В нормальной ситуации это требует обращения к каждому файлу для проверки изменений.
fsmonitor использует сервис watchman, чтобы получать уведомления об изменениях.
watchman в свою очередь, использует специфичные для платформы API, такие как inotify или FSevents,
чтобы получать уведомления от операционной системы всякий раз, когда файл в хранилище изменился.
Используя fsmonitor, команды hg status
, hg diff
и другие,
должны проверять только те файлы, которые на самом деле изменились, вместо того, чтобы обходить всё хранилище.
automv
Другим важным изменением является введение экспериментального расширения automv.
Обычно, люди перемещают файлы в своих репозиториях используя команды hg mv
или hg cp
.
Несмотря на это, вполне легко забыть об этих командах и использовать обычное перемещение, особенно при использовании IDE.
Расширение automv пытается определить похожие файлы при коммите и отмечает их как перемещённые/скопированные.
chg
Новый интегрированный chg клиент предоставляет альтернативный способ запуска Mercurial команд. Причиной низкой производительности Mercurial с точки зрения скорости команд является то, что он написан на Python. Это обычно не ограничивающий фактор, но запуск интерпретатора добавляет некоторые накладные расходы. Chg решает эту проблему, используя клиент, реализованный на C, и сервер на Python. Вместо того, чтобы запускать интерпретатор Python для каждой команды, вызов chg запускает простое C-приложение, которое общается с сервером команд.
>>> Подробности