Выпуск распределённой системы управления версиями Mercurial 4.8
Доступен релиз распределённой системы управления версиями Mercurial 4.8. Код Mercurial написан на языке Python (требующие высокой производительности части оформлены в виде модулей на Си) и распространяется под лицензией GPLv2+. Среди проектов, использующих Mercurial, можно выделить следующие: Mozilla, OpenOffice.org, OpenSolaris, NetBeans, OpenJDK, Nginx, Xine и W3C.
Основные изменения:
- Стабилизирована реализация шаблонов форматирования, которые можно применять для настройки формата вывода любых команд, в том числе для применения JSON и XML для вывода;
- Реализовано расширение «closehead» для закрытия произвольных веток без выполнения операции checkout;
- Добавлена новая настройка commands.resolve.mark-check для вывода предупреждения или ошибки при выполнении операции »--mark» при наличии конфликтующих файлов;
- Добавлена новая настройка commands.resolve.confirm для подтверждения действий, выполняемых без указания имени файла;
- В команду rebase добавлен флаг »--stop» для остановки прерванных операций без отбрасывания уже перенесённых изменений;
- Предложено экспериментальное расширение absorb для «поглощения» рабочих изменений соответствующими наборами изменений;
- Добавлено экспериментальное расширение fastannotate для ускорения операций аннотирования с использованием предварительно сформированного кэша. Расширение также предоставляет дополнительные опции, такие как »--deleted»;
- В набор hgext добавлено расширение phabricator;
- В файл конфигурации добавлена настройка http.timeout для определения таймаута;
- Обеспечена автоматическая загрузка расширений для работы с текущим хранилищем (например, lfs);
- Расширены правила автодополнения ввода команд hg для zsh;
- Проведены оптимизации производительности.
Особенности Mercurial:
- Быстродействие:
- Высокая производительность работы с хранилищем, не зависящая от числа элементом в нём (O (1) revlog);
- Компактное хранение данных в проиндексированном и сжатом виде;
- Оптимизирован для эффективной работы с данными на жёстком диске;
- Все изменения и файлы в репозитории дополнительно проиндексированы;
- Для копирования данных по сети используется HTTPS и SSH, данные передаются в сжатом виде.
- Масштабирование
- Распределённая модель разработки позволяет участвовать в проекте неограниченному числу разработчиков;
- Допускается произвольное слияние отдельных децентрализованных репозиториев, поддерживаемых отдельными разработчиками;
- Объём репозитория, число файлов и зафиксированных изменений не отражается отрицательно на производительности;
- При работе нет необходимости ждать освобождения блокировки.
- Надёжность.
- Для контроля целостности данных в репозитории используется SHA1 (запланирован переход на SHA256);
- Хранилище реализовано в журнальном виде — данные не замещаются, а добавляются. Ведётся журнал транзакций;
- Быстрый алгоритм проверки целостности репозитория;
- Встроенные средства резервного копирования и проверки целостности;
- Удобство использования.
- Привычный CVS-подобный набор команд;
- Наличие встроенной системы подсказки;
- Интегрированный Web-интерфейс;
- Большой выбор GUI-интерфейсов.
- Лёгкость внедрения:
- Поддержка платформ UNIX, macOS и Windows;
- Средства, упрощающие миграцию с других систем управления исходными текстами;
- Поддержка нескольких моделей организации репозитория: централизованная cvs-подобная, децентрализованная иерархическая и распределённая полуиерархическая;
- Поддержка внешних обработчиков и дополнений.
© OpenNet