Релиз системы управления версиями Subversion 1.7.0
Организация Apache Software Foundation представила релиз системы управления версиями Subversion 1.7.0, первого значительного выпуска с момента принятия в апреле 2010 года Subversion в число первичных проектов Apache. Несмотря на развитие децентрализованных систем, Subversion пользуется большой популярностью в коммерческих компаниях и проектах, использующих централизованный подход к управлению версиями и конфигурацией программных систем.
Из использующих Subversion открытых проектов можно отметить: Django, FreeBSD, Free Pascal, GCC, MediaWiki, Mono, PHP, Ruby. Поддержка Subversion реализована в таких хостингах открытых проектов, как Google Code, CodePlex и SourceForge. Результаты исследования, проведённого компанией Forrester Research, показали, что Apache Subversion лидирует в категории продуктов автономной конфигурации программного обеспечения и управления изменениями.
Среди ключевых улучшений:
HTTPv2 - новый протокол, позволяющий увеличить производительность при обмене данными между клиентом и сервером Subversion, за счет минимизации числа обращений;
WC-NG - полностью переписан код одной из старейших частей Subversion - библиотеки работы с рабочей копией мета-данных libsvn_wc, что позволило значительно увеличить производительность работы централизованного хранилища данных, а также обеспечить функциональность, позволяющую реализовать такие возможности, как отложенные и offline коммиты;
Рабочие копии мета-данных, ранее разбросанные по всем директориям (каталоги .svn), теперь сохраняются в одном месте - в корне рабочей копии проекта создаётся одна директория ".svn", мета-данные в которой сохраняются с использованием SQLite. В этой же директории хранится и копия изначального содержимого всех файлов проекта (вместо text-bases отныне данные хранятся как pristines). Недостатком использования SQLite являются возможное усложнение резервного копирования, так как простое копирования файла базы во время работы с ней библиотек Subversion может привести к нарушению целостности. Отдельно отмечается, что новая версия не поддерживает автоматическое преобразования формата хранения мета-данных из ветки 1.6, для преобразования необходимо вручную выполнить команду "svn upgrade";
svnrdump - новая клиентская утилита, предоставляющая возможности похожие на "svnadmin dump" и "svnadmin load", но способная работать с внешними репозиториями по сети. Используя данную утилиту администратору больше не требуется заходить на каждый удалённый сервер для полного доступа к репозиторям;
Значительно увеличена стабильность и производительность клиентской библиотеки libsvn_ra_serf, используемой для организации доступа к репозиторию по HTTP. В настоящее время serf значительно опережает по скорости работы с репозиторием библиотеку neon, тем не менее neon пока оставлена в качестве библиотеки по умолчанию, но в версии Subversion 1.8 запланирован переход на serf;
Улучшение производительности и эффективности выполнения операций по слиянию веток (merge);
Ряд оптимизаций производительности на стороне сервера: используется более агрессивный метод кэширования и возможность управления степенью сжатия передаваемого трафика;
Поддержка новой команды "svn patch", позволяющей применить патч в формате unidiff, полученный в результате выполнения команды "svn diff" или сторонних diff-инструментов. По сути "svn patch" повторяет действие утилиты patch, но только сразу помещая изменения в репозиторий;
Более наглядный вывод информации при выполнении "svn update" для нескольких рабочих копий;
При выполнении "svn diff" изменения в свойствах теперь отображаются в стиле unidiff, за исключением свойств svn:mergeinfo;
При выводе ошибки или предупреждения теперь выводится номер, идентифицирующий тип проблемы;
В "svn log" добавлена опция "--diff", позволяющая сразу выводить различия;
В "svn update" добавлена опция "--parents", при указании которой автоматически создаются недостающие родительские директории;
Новая команда "svn relocate", связывающая рабочую копию репозитория с другим корневым URL;
В "svn diff" добавлена опция "--show-copies-as-adds", при которой скопированные файлы отображаются в стиле, как при добавлении новых файлов;
В "svn diff" добавлена опция "--git", выводящая дополнительные аннотации о добавленных, удалённых или скопированных файлах, в стиле, подобном git-diff;
Добавлена команда "svnlook filesize", возвращающая размер указанного пути в репозитории в состоянии для заданной ревизии или транзакции.