Темы



Релиз системы управления версиями 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