SubversionАнглийское слово можно перевести двояко — как «свержение» (subversion) и как «подверсия» (sub-version) (также известная как «SVN»По названию программы-клиента для командной строки, входящей в состав пакета) — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией . С 2010 года Subversion является одним из проектов Apache Software Foundation и официально называется Apache Subversion (зарегистрированный товарный знак).

Цель проекта в начале разработки — заменитьSubversion Features The Risks of Distributed Version Control Бен Коллинз-Сассман распространённую на тот момент систему Concurrent Versions System (CVS), которая на сегодняшний день считается морально устаревшейCVS is out, Subversion is in Red Hat magazine, август 2005 г.CVS — sourceforge . Subversion обладает всеми основными функциями CVS и избавлена от ряда недостатков последней.

Subversion всё ещё используется некоторыми сообществами разработчиков открытого программного обеспечения (в том числе сообществами, ранее использовавшими CVS), но почти все крупные проекты перешли на DVCS. В числе последних пользователей Subversion среди открытых проектов остаётся FreeBSD, но и они анонсировали переход на Git. Довольно долго использовали Subversion такие известные проекты, как Apache, GCC, FFmpeg, LLVM, Free Pascal. Subversion также используется в закрытых проектах и корпоративной сфере, но насколько широко — оценить непросто. Хостинг Subversion, в том числе для проектов с открытым кодом, также предоставляют популярные хостинг-проекты SourceForge.net, Tigris.org, Google Code и BountySource.

В 2007 году аналитическая компания Forrester, сравнивая преимущества и недостатки различных систем, оценила Subversion как «единоличного лидера в категории Standalone Software Configuration Management (SCM) и сильного участника в категории Software Configuration and Change Management (SCCM)».

По данным статистики использования пакетов Linux-дистрибутивов Debian и Ubuntu, количество активных пользователей Subversion достигло максимума примерно в 2010 году, и начало снижаться с 2016 года. Тем не менее, количество проектов, использующих Subversion всё ещё больше, чем использующих CVS, Mercurial и Bazaar (по состоянию на август 2019 года).

В качестве официальной документации позиционируетсясм. http://subversion.apache.org/docs/ книга издательства O’Reilly Media, выложенная в свободный доступ и дописываемая авторами по мере выхода новых версий SVN. Там же публикуются её переводы на ряд языков, в том числе русский, но при том, что англоязычные версии книги сейчас описывают версии 1.8 и 1.7, на русском языке имеются лишь книги, описывающие версии до 1.4 включительно.

История Разработка Subversion была начата в 2000 году по инициативе и при финансовой поддержке CollabNet. Инициаторы проекта хотели создать свободную систему управления версиями, в основном похожую на CVS, но лишённую её ошибок и неудобств. В то время не существовало лучших программ этого класса со свободной лицензией, CVS была стандартом де-факто среди разработчиков свободного программного обеспечения. Выбрав её за основу, разработчики Subversion надеялись упростить разработку за счёт использования уже проверенных концепций и в то же время облегчить переход на новую систему многочисленным пользователям CVS.

Основные события истории развития Subversion. 31 августа 2001 года команда разработчиков перешла с CVS на Subversion для управления собственным исходным кодом: Subversion стала «самодостаточной». 23 февраля 2004 года вышла версия 1.0.0Список изменений . К этому времени Subversion уже использовалась примерно на 1400 серверах с открытым доступом.Goliath Business News 29 сентября 2004 года появился релиз 1.1.0. Среди основных нововведений — новый формат хранилища на основе обычных файлов (FSFS), в дополнение к существовавшему ранее (с использованием Berkeley DB). 21 мая 2005 года вышел релиз 1.2.0, в котором добавлена возможность блокировки файлов, что позволило улучшить поддержку клиентов WebDAV/DeltaV, в том числе, реализовать автоматическое создание новых версий при редактировании файлов с помощью таких клиентов. Начиная с этого релиза Subversion по умолчанию использует FSFS для новых хранилищ. 30 декабря 2005 года вышел релиз 1.3.0. Основными изменениями являются возможность устанавливать права доступа к каталогам при использовании svnserve, дополнительные возможности команд, а также множество улучшений для разработчиков. 10 сентября 2006 года вышел релиз 1.4.0. Он поддерживает работу с BerkeleyDB 4.4 и может использовать её функции самовосстановления. Ранее при сбоях Subversion хранилище, использующее BerkeleyDB, могло остаться в «заклиненном» состоянии и требовалось вмешательство администратора для восстановления работы системы (при использовании FSFS этой проблемы нет). 19 июня 2008 года вышел релиз 1.5.0, в нём сделано множество улучшений, самым значительным из которых является базовая поддержка отслеживания слияний (). Эта возможность делает процесс слияния пакетов в Subversion более простым и надёжным. 20 марта 2009 года вышел релиз 1.6.0. Улучшения поддержки svn:externals, обнаружение «конфликтов деревьев» (), улучшение эффективности хранения данных в репозитории и другие внесённые изменения. В феврале 2010 года проект Subversion был официально переведён под управление Apache Software Foundation (ASF)Subversion переведена под контроль Apache Software Foundation , nixp.ru. Президент Subversion Corporation и директор Open Source в WANdisco выступил с видеообращением, в котором с энтузиазмом пообещал всем, что переход Subversion к ASF будет лишь способствовать более активному развитию проекта.Subversion & the Move to the Apache Software Foundation, (видеообращение президента Subversion Corporation) 11 октября 2011 года состоялся релиз 1.7. Основные улучшения: теперь только одна папка .svn в корне рабочей копии; ускорена работа по HTTP; добавлена утилита svnrdump; новая команда svn patch. 18 июня 2013 года вышел релиз 1.8.0. Apache Subversion 1.8 является расширением всех предыдущих выпусков Subversion.

Версия Дата первоначального выпуска Последняя версия Дата последнего выпуска Статус 2004-02-23 1.0.9 2004-10-13 Больше не поддерживается 2004-09-29 1.1.4 2005-04-01 Больше не поддерживается 2005-05-21 1.2.3 2005-08-19 Больше не поддерживается 2005-12-30 1.3.2 2006-05-23 Больше не поддерживается 2006-09-10 1.4.6 2007-12-21 Больше не поддерживается 2008-06-19 1.5.9 2010-12-06 Больше не поддерживается 2009-03-20 1.6.23 2013-05-30 Больше не поддерживается 2011-10-11 1.7.22 2015-08-12 Больше не поддерживается 2013-06-18 1.8.19 2017-08-10 Больше не поддерживается 2015-08-05 1.9.12 2019-07-24 Больше не поддерживается 2018-04-13 1.10.8 2022-04-12 Больше не поддерживается 2018-10-30 1.11.1 2019-01-11 Больше не поддерживается 2019-04-24 1.12.2 2019-07-24 Больше не поддерживается 2019-10-30 1.13.0 2019-10-30 Больше не поддерживается 2020-05-271.14.52024-12-08Полностью поддерживается, LTS 20XX1.15.0(Ещё не выпущено)В разработке

Общие сведения

Возможности Хранение полной истории изменений отслеживаемых объектов (ов, каталогов, символьных ссылокработа с символьными ссылками поддерживается только в рабочих копиях под UNIX-системами) в централизованном хранилище (репозитории), в том числе при изменении атрибутов («метаданных»), перемещении, переименовании и удалении Копирование объектов с разветвлением истории — при копировании в хранилище появляются два отдельных объекта с общей историей Поддержка переноса изменений между копиями объектов, в том числе полного слияния копий (в рабочей копии; без объединения истории) ЭмуляцияВетви и метки в Subversion не являются независимым измерением хранилища. См. The Key Concepts Behind Branching ветвления: создание ветвей с помощью копирования каталогов и последующая независимая работа с ними слияние ветвей с автоматическим определением и переносом изменений Эмуляция меток (копированием каталогов) История изменений и копии объектов (в том числе ветви и метки) хранятся в виде связанных разностных копий — «дешёвых» (не требующих больших временны́х и дисковых ресурсов) при создании и хранении Поддержка конкурентной (в том числе одновременной, с изоляцией транзакций) многопользовательской работы с хранилищем и, в большинстве случаев, автоматическим слиянием изменений различных разработчиков (в рабочей копии) Фиксации изменений в хранилище (в том числе многообъектные) организуются в виде атомарных транзакций Сетевой обмен между сервером и клиентом предусматривает передачу только различий между рабочей копией и хранилищем Обеспечивается одинаково эффективная работа как с текстовыми, так и с двоичными файлами Различные варианты доступа к хранилищу, в том числе: непосредственный доступ на локальной файловой системе; по собственному сетевому протоколу; через веб-сервер по протоколу WebDAV/DeltaV. Вывод клиента командной строки одинаково удобен и для чтения, и для разбора программами Возможность зеркалирования хранилища Два возможных внутренних формата хранилища (): база данных или набор обычных файлов Интернационализированные сообщения программы (используются настройки локали) Библиотеки для языков PHP, Python, Perl, Java позволяют встроить функциональность клиента Subversion в программы, написанные на этих языках Многоуровневая архитектура библиотек, изначально рассчитанная на клиент-серверную модель

Модель работы Subversion — централизованная система (в отличие от распределённых систем, таких как Git или Mercurial), то есть данные хранятся в едином хранилище. Хранилище может располагаться на локальном диске или на сетевом сервере.

Работа в Subversion мало отличается от работы в других централизованных системах управления версиями. Клиенты копируют ы из хранилища, создавая локальные рабочие копии, затем вносят изменения в рабочие копии и фиксируют эти изменения в хранилище. Несколько клиентов могут одновременно обращаться к хранилищу. Для совместной работы над файлами в Subversion преимущественно используется модель копирование — изменение — слияние. Кроме того, для файлов, не допускающих слияние (различные бинарные форматы файлов), можно использовать модель блокирование — изменение — разблокирование.

При сохранении новых версий используется дельта-компрессия: система находит отличия новой версии от предыдущей и записывает только их, избегая дублирования данных.

При использовании доступа с помощью WebDAV также поддерживается прозрачное управление версиями — если любой клиент WebDAV открывает для записи и затем сохраняет файл, хранящийся на сетевом ресурсе, то автоматически создаётся новая версия.

Типы репозиториев Subversion предлагает два варианта организации репозиториевТермины хранилище и репозиторий являются синонимами.. Репозитории первого типа используют для хранения базы данных на основе Berkeley DB, репозитории второго типа — обычные ы специального формата (доступ к данным организуется с помощью собственных библиотек, без использования сторонних баз данных). Разработчики Subversion часто называют хранилище «файловой системой», поэтому второй тип получил название FSFS, то есть (версионированная) файловая система () поверх (обычной) файловой системы.

Оба типа репозиториев обеспечивают достаточную надёжность при правильной организацииГлава 5. Администрирование хранилища в книге «Управление версиями в Subversion» (Berkeley DB использует блокировки файлов, поэтому её нельзя использовать на некоторых сетевых файловых системах, не поддерживающих блокировок), каждая из них обладает своими преимуществами и недостатками. Считается, что FSFS легче правильно настроить, она требует меньшего внимания от администратора. Кроме того, до релиза 1.4 хранилища, использующие Berkeley DB, могли при определённых условиях оказаться в так называемом заклиненном () состоянии; требовалось вмешательство администратора для восстановления его работоспособности.