Выпуск распределённой системы управления версиями Mercurial 3.4
Представлен релиз распределённой системы управления версиями Mercurial 3.4. Код Mercurial написан на языке Python (требующие высокой производительности части оформлены в виде модулей на Си) и распространяется под лицензией GPLv2+. Среди проектов, использующих Mercurial, можно выделить Mozilla, Python, OpenSolaris, NetBeans, OpenJDK, ALSA, Nginx, Xine, Dovecot, NTFS-3G, Vim и W3C. Основные новшества:
По умолчанию на серверах задействован новый протокол bundle2, которому присвоен статус стабильного (в клиентах пока требуется явное включение bundle2). По сравнению с классическим протоколом, в bundle2 сокращено число этапов согласования соединения, что положительно сказалось на скорости выполнением операций push и pull, и дало возможность сделать данные операции атомарными. Кроме того, в протоколе предоставлены средства для обмена дополнительными метаданными в рамках установленного канала связи, что открывает широкие возможности для развития новшеств, например, уже продемонстрирована возможности автоматического перестроения (rebase) сервера при выполнении операции push. На сервере hg.mozilla.org поддержка нового протокола появится не раньше 1 июня. Переписан код кэширования тегов, что позволило избавиться от узких мест с производительностью, проявляющихся при работе с очень большими репозиториями (например, для некоторых типов запросов к mozilla-central могли возникать подвисания в несколько секунд); В web-интерфейс hgweb добавлена возможность вывода в формате JSON для почти всех вызовов API. Поддержка JSON позволяет создавать новые настройки и сервисы, работающие с Mercurial. Компания Google подготовила новый бэкенд для хранения манифестов (списков файлов в коммите), который позволяет реализовать такие возможности, как клонирование только выбранных директорий. Новое хранилище позволит перенести репозитории l10n в mozilla-central; Связанные с вычислениями стадии переписаны на языке Си, что заметно отразилось на производительности; Приблизительно на 20% увеличена скорость работы команды «hg diff». Разработчиками из компании Google проведены оптимизации частей, используемых для чтения манифеста. Операции, подобные «hg export tip», стали выполняться в mozilla-central на 50% быстрее; На файловых системах, не чувствительных к регистру символов в именах файлах, возросла производительность «hg status». На платформе OS X скорость работы «hg status» возросла на 25%. Производительность вызова «hg revert» в некоторых сценариях возросла до 4 раз; Добавлена команда «hg diff --root», позволяющая оценить различия, относительно произвольной директории; Добавлена команда «censor», которая позволяет цензурировать данные из прошлых коммитов. Например, если по ошибке в составе коммита в репозиторий переданы сведения, которые не подлежат разглашению, то команда «censor» позволяет закрыть эти данные от клонирования клиентами. В основной состав перенесена функциональность расширения «hg record». Добавлен экспериментальный интерактивный консольный интерфейс, созданный при помощи библиотеки curses (включается через «experimental.crecord = true»); При вводе неизвестной команды, Mercurial теперь пытается исправить ошибку и предлагает наиболее близкую рабочую команду; Устранены появившиеся в прошлом выпуске регрессивные изменения, проявляющиеся проблемами с производительностью при обращении к hg.mozilla.org через web-интерфейс; Для дополнений предоставлены средства для создания собственных обработчиков для редактирования истории операций (histedit) Mercurial 3.4 объявлен последним выпуском, в котором поддерживаются ветки Python 2.4 и 2.5. Достоинства Mercurial:
Быстродействие: Высокая производительность работы с хранилищем, не зависящая от числа элементом в нём (O (1) revlog); Компактное хранение данных в проиндексированном и сжатом виде; Оптимизирован для эффективной работы с данными на жёстком диске; Все изменения и файлы в репозитории дополнительно проиндексированы; Для копирования данных по сети используется HTTP и SSH, данные передаются в сжатом виде. Масштабирование Распределённая модель разработки позволяет участвовать в проекте неограниченному числу разработчиков; Допускается произвольное слияние отдельных децентрализованных репозиториев, поддерживаемых отдельными разработчиками; Объём репозитория, число файлов и зафиксированных изменений не отражается отрицательно на производительности; При работе нет необходимости ждать освобождения блокировки. Надёжность. Для контроля целостности данных в репозитории используется SHA1; Хранилище реализовано в журнальном виде — данные не замещаются, а добавляются. Ведётся журнал транзакций; Быстрый алгоритм проверки целостности репозитория; Встроенные средства резервного копирования и проверки целостности; Удобство использования. Привычный CVS-подобный набор команд; Наличие встроенной системы подсказки; Интегрированный Web-интерфейс; Большой выбор GUI интерфейсов. Лёгкость внедрения: Поддержка платформ UNIX, OS X и Windows; Средства, упрощающие миграцию с других систем управления исходными текстами; Поддержка нескольких моделей организации репозитория: централизованная cvs-подобная, децентрализованная иерархическая и распределённая полуиерархическая; Поддержка внешних обработчиков и дополнений.
© OpenNet