Релиз системы управления версиями Apache Subversion 1.10.0
После почти трёх лет разработки состоялся релиз новой ветки системы управления версиями Subversion 1.10.0. Несмотря на развитие децентрализованных систем, Subversion продолжает пользоваться популярностью в коммерческих компаниях и проектах, использующих централизованный подход к управлению версиями и конфигурацией программных систем. Из использующих Subversion открытых проектов можно отметить: проекты Apache, FreeBSD, Free Pascal, OpenSCADA, GCC и LLVM.
Ключевые улучшения:
- Представлена новая реализация механизма авторизации на основе путей, дающего возможность определить правила доступа к отдельным каталогам в репозитории. Помимо ранее предлагаемых правил »[repos:/path]» (с привязкой к репозиторию) и »[/path]» (глобальные проверки), которые допускают только точные совпадения путей, новая реализация позволяет использовать два новых формата »[: glob: repos:/path]» и »[: glob:/path]», допускающих использования масок. Для создания масок предлагается использовать классические маски вида *foo*.bar, а также конструкции »/*/» для сопоставления с одним (только одним) сегментом пути и »/**/» для сопоставления с произвольным числом сегментов;
- Полностью переработана интерактивная система разрешения конфликтов, которая ищет в истории репозитория структурные изменения (операции добавления, удаления, копирования и перемещения), которые конфликтуют с локальными изменениями в рабочей копии и приводят к образованию дерева конфликтов. В новой реализации дерево конфликтов снабжено детальными сведениями, которые раньше приходилось искать вручную, в том числе указаны номера ревизий и имена разработчиков конфликтующих изменений. Новая система также научилась определять операции перемещения и переименования в истории репозитория и учитывать их при изменении локальной рабочей копии, что сделало процесс слияния между ветками максимально прозрачным, в случае если в одной или в обеих ветках выполнялись операции переименования файлов или каталогов. Конфликты которые имеют однозначное решение теперь по возможности разрешаются автоматичести, без запроса пользователя (например, когда файл перемещён в другое место репозитория);
- Добавлена поддержка механизма сжатия LZ4, в качестве альтернативы ранее предлагавшейся системе zlib. LZ4 существенно превосходит zlib по скорости сжатия и распаковки, сохраняя при этом приемлемую степень сжатия. Как результат, переход на LZ4 позволяет существенно увеличить производительность операций чтения и записи, особенно если репозиторий включает большие файлы. Поддержка LZ4 включена по умолчанию для сжатия данных в репозитории (версия формата хранилища 8, для обновления можно использовать «svnadmin upgrade»), а также применяется для сжатия трафика при доступе к внешнему репозиторию по «http://» и «svn://»;
- Добавлены экспериментальные команды «svn shelve/unshelve/shelves», позволяющие отдельно отложить незавершенные изменения в рабочей копии, чтобы срочно поработать над чем-то другим, а затем вернуть недоделанные изменения в рабочую копию. Поведение предлагаемой возможности похоже на сохранение созданного через «svn diff» патча с последующим его восстановлением через «svn patch»;
© OpenNet