Релиз распределённой системы управления версиями Mercurial 2.2
Представлен релиз распределённой системы управления версиями Mercurial 2.2. Код Mercurial написан на языке Python (требующие высокой производительности части оформлены в виде модулей на Си) и распространяется под лицензией GPLv2+. Среди проектов, использующих Mercurial, можно выделить OpenSolaris, NetBeans, OpenJDK, ALSA, Mozilla, Xen, Xine, Dovecot, NTFS-3G, Python, Vim и W3C.Среди изменений, внесённых в Mercurial 2.2:
- В команду commit добавлена поддержка опции '--amend' для выполнения коммита с использованием новой инфраструктуры Phases, вводящей несколько дополнительных проверок на уровне клиента. Например, защищающей от перезаписи истории и обмена сырыми наборами изменений с другими репозиториями;
- Добавлена поддержка ОС Plan9;
- Серия значительных оптимизаций: Увеличена производительность операции слияния (merge) при наличии большого числа неизвестных файлов. Ускорено выполнение операций push/pull для некоторых видов транспорта. На языке Си переписан парсер индекса revlog. Увеличена производительность распаковки больших цепочек при выполнении push. Ускорено выполнение операций чтения и записи больших fncache-файлов в хранилище;
- В команду graft добавлена опция "--dry-run" для оценочного выполнения действия без фактических изменений;
- В интерфейсе добавлена поддержка настройки ширины и цвета для веток, добавлено отображения числа блоков в diff, обеспечена поддержка многоуровневых индексов репозитория;
- Добавлена серверная настройка конфигурации для клонирования без использования сжатия;
- В команду revert добавлена поддержка возвращения изменений для субрепозиториев;
- В revset добавлено ключевое слово "matching";
- Расширены средства интеграции с Bugzilla.
Сразу после выпуска 2.2.0 вышло внеплановое обновление 2.2.1, в котором была устранена значительная утечка памяти в hgweb.
Достоинства Mercurial:
- Быстродействие:
- Высокая производительность работы с хранилищем, независящая от числа элементом в нём (O(1) revlog);
- Компактное хранение данных в проиндексированном и сжатом виде;
- Оптимизирован для эффективной работы с данными на жёстком диске;
- Все изменения и файлы в репозитории дополнительно проиндексированы;
- Для копирования данных по сети используется HTTP и SSH, данные передаются в сжатом виде.
- Масштабирование
- Распределённая модель разработки позволяет участвовать в проекте неограниченному числу разработчиков;
- Допускается произвольное слияние отдельных децентрализованных репозиториев, поддерживаемых отдельными разработчиками;
- Объём репозитория, число файлов и зафиксированных изменений не отражается отрицательно на производительности;
- При работе нет необходимости ждать освобождения блокировки.
- Надёжность.
- Для контроля целостности данных в репозитории используется SHA1;
- Хранилище реализовано в журнальном виде - данные не замещаются, а добавляются. Ведётся журнал транзакций;
- Быстрый алгоритм проверки целостности репозитория;
- Встроенные средства резервного копирования и проверки целостности;
- Удобство использования.
- Привычный CVS-подобный набор команд;
- Наличие встроенной системы подсказки;
- Интегрированный Web-интерфейс;
- Большой выбор GUI интерфейсов.
- Лёгкость внедрения:
- Поддержка платформ UNIX, MacOS X и Windows;
- Средства, упрощающие миграцию с других систем управления исходными текстами;
- Поддержка нескольких моделей организации репозитория: централизованная cvs-подобная, децентрализованная иерархическая и распределённая полуиерархическая;
- Поддержка внешних обработчиков и дополнений.
© OpenNet