Релиз системы управления версиями Apache Subversion 1.10.0
Как сообщает opennet.ru после почти трех лет разработки состоялся релиз новой ветки системы управления версиями 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), а также применяется для сжатия трафика при доступе к внешнему репозиторию по "http://" и "svn://". Для обновления до новой версии формата хранилища можно использовать команду "svnadmin upgrade";
- Добавлены экспериментальные команды "svn shelve/unshelve/shelves", позволяющие отдельно отложить незавершенные изменения в рабочей копии, чтобы срочно поработать над чем-то другим, а затем вернуть недоделанные изменения в рабочую копию. Поведение предлагаемой возможности похоже на сохранение патча, созданного через "svn diff", с последующим его восстановлением через "svn patch";