Apache Subversion (также известная как “SVN”) – свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet.
Цель проекта – заменить собой распространенную на тот момент систему CVS (Concurrent Versions System), которая ныне считается устаревшей. Apache Subversion реализует все основные функции CVS и свободна от ряда недостатков последней.
Apache Subversion используется многими сообществами разработчиков открытого программного обеспечения (в том числе сообществами, ранее использовавшими CVS). В их числе такие известные проекты, как Apache OpenOffice, GCC, Free Pascal, Python, Ruby, FreeBSD, AROS, Blender, Boost, Tor Vidalia Bundle, OGRE. Apache Subversion также широко используется в закрытых проектах и корпоративной сфере. Хостинг Subversion, в том числе для проектов с открытым кодом, также предоставляют популярные хостинг-проекты SourceForge.net, Tigris.org, Google Code и BountySource.
В 2007 году аналитическая компания Forrester, сравнивая преимущества и недостатки различных систем, оценила Apache Subversion как «единоличного лидера в категории Standalone Software Configuration Management (SCM) и сильного участника в категории Software Configuration and Change Management (SCCM)».
По данным статистики использования пакетов Linux-дистрибутивов Debian и Ubuntu, количество активных пользователей Apache Subversion примерно такое же, как у Git, и превосходит аналогичный показатель для CVS, Mercurial и Bazaar (по состоянию на июнь 2011 года).
В качестве официальной документации позиционируется книга издательства O’Reilly Media, выложенная в свободный доступ и дописываемая авторами по мере выхода новых версий SVN. Там же публикуются её переводы на ряд языков, в том числе русский, но при том, что англоязычные версии книги сейчас описывают версии 1.6 и 1.5, на русском языке имеются лишь книги, описывающие версии до 1.4 включительно.
Возможности Apache Subversion
создания ветвей (копированием директорий) и работы с ними;
слияние ветвей (переносом изменений).
непосредственный доступ на локальной файловой системе;
по собственному сетевому протоколу;
через веб-сервер по протоколу WebDAV/DeltaV.
база данных или набор обычных файлов.
Недостатки Apache Subversion
Apache Subversion не всегда может правильно обработать операции переименования файлов, если одновременно с переименованием изменяется и содержимое файла. Проблемы могут также возникнуть, если файл, переименованный в локальной копии, кто-то другой изменил в хранилище. Часть этих проблем исправлена в версии 1.5, однако это решение пока не полное.
Также слабым местом Apache Subversion считают операции слияния веток. До версии 1.5 все такие операции пользователям приходилось отслеживать вручную, с помощью подробных записей в журнале изменений. Начиная с версии 1.5 появилась базовая поддержка автоматического отслеживания слияний, которую разработчики планируют улучшить в последующих релизах. В настоящее время Apache Subversion достаточно хорошо поддерживает типовые сценарии слияния; в более сложных случаях возможны проблемы. Рекомендуется организовать рабочий процесс так, чтобы избежать проблемных сценариев. Слияние переименованных файлов и директорий не поддерживается.
Информация, однажды помещённая в хранилище Apache Subversion, остаётся там навсегда: файл можно удалить в текущей ревизии, но всегда есть возможность получить из хранилища одну из предыдущих ревизий, в которых файл существовал. Хотя сохранность прошлых ревизий и является, собственно, целью использования систем управления версиями, иногда бывает необходимо полностью удалить из хранилища информацию, попавшую туда по ошибке. В Apache Subversion не предусмотрено для этого никакого штатного способа; единственная возможность заключается в создании дампа хранилища, его обработке штатной утилитой svndumpfilter и последующем восстановлении хранилища из дампа. Существуют также сторонние программы для автоматизации этого процесса, но, в любом случае, для выполнения этой операции требуется временное прекращение доступа к хранилищу и вмешательство администратора с привилегиями, достаточно высокими для того, чтобы полностью стереть старое хранилище и заменить его новым.
засоряет файловую структуру проекта. Начиная с версии 1.7 в корне рабочей копии проекта создаётся одна директория .svn, метаданные в которой сохраняются с использованием SQLite.
Ссылки