Релиз системы управления версиями 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", возвращающая размер указанного пути в репозитории в состоянии для заданной ревизии или транзакции.

© OpenNet