SVN, или Apache Subversion, это централизованная система контроля версий. Вся история проекта лежит в одном репозитории на сервере, а каждый участник забирает себе рабочую копию, правит файлы и отправляет изменения обратно коммитом. По-русски название нередко пишут как «свн», но в проектной документации СВН означает систему видеонаблюдения, а здесь речь о программе для разработчиков.
Чтобы начать работать, хватит трёх шагов: поставить клиент (графический на Windows или пакет subversion на macOS и Linux), получить рабочую копию командой svn checkout и дальше ходить по циклу «обновить → изменить → проверить → зафиксировать». Если вы уже знакомы с Git, сравните подходы по нашему разбору Git простыми словами: многие слова там те же, а логика другая.
Что такое SVN и как он устроен

Subversion появился в 2000 году в компании CollabNet, сейчас его развивает фонд Apache. Последний выпуск на ноябрь 2026 года, Apache Subversion 1.15.0, вышел 8 октября 2026 года.
Главное отличие от Git в том, что у SVN один центральный репозиторий. На вашем компьютере лежит не вся история, а рабочая копия одной ревизии плюс служебная папка .svn.
| Термин | Что означает |
|---|---|
| Репозиторий | Хранилище на сервере со всеми версиями файлов |
| Рабочая копия | Папка у вас на диске, где вы правите файлы |
| Ревизия | Номер состояния репозитория после очередного коммита: r1, r2, r3 и дальше по порядку |
| Коммит | Отправка ваших изменений в репозиторий с комментарием |
| trunk, branches, tags | Основная линия разработки, ветки и метки релизов. Это соглашение, а не требование программы |
Номер ревизии общий для всего репозитория. Если коллега закоммитил правку в соседний модуль, номер вырос и у вас, хотя ваши файлы не менялись.
С контролем версий сталкиваются почти во всех IT-ролях: его используют и веб-разработчики, и DevOps-инженеры, которые настраивают сборку и выкладку кода.
Как установить SVN на Windows, macOS и Linux
Официальный список сборок лежит на странице пакетов Apache Subversion. Сам проект готовые установщики официально не поддерживает, их собирают сторонние команды.
| Система | Чем ставить | Команда или файл |
|---|---|---|
| Windows | TortoiseSVN: графический клиент, работает из Проводника | Установщик .msi для 32-bit, 64-bit или ARM64 |
| Windows | SlikSVN (консольный клиент) или VisualSVN (клиент и сервер) | Установщик .msi с сайта проекта |
| macOS | Homebrew или MacPorts | brew install subversion |
| Ubuntu, Debian | Пакетный менеджер | sudo apt-get install subversion |
| CentOS, Red Hat | Пакетный менеджер | sudo yum install subversion |
На Windows проще всего начать с TortoiseSVN. Текущая версия 1.15.0 собрана с библиотекой Subversion 1.15.0. На той же странице есть русский языковой пакет, его ставят вторым установщиком после основного.
Важная галочка: в установщике клиента консольные инструменты включаются отдельно. Без них команда svn в терминале не найдётся, хотя меню в Проводнике будет работать.
Проверить установку можно одной командой:
svn --version
Если терминал ответил номером версии, клиент на месте. Если команда не найдена, значит консольный клиент не установлен или не попал в PATH.
Канал основателя Checkroi Вани Буявца3 800 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяПервые шаги: репозиторий и рабочая копия
В рабочем проекте репозиторий обычно уже есть, и вам присылают его адрес. Для тренировки можно завести свой прямо на диске, сервер для этого не нужен. Команды ниже взяты из раздела быстрого старта книги Version Control with Subversion, её ведут на официальном сайте svnbook.
- Создайте пустой репозиторий:
svnadmin create /var/svn/repos. - Подготовьте папку проекта с подпапками
trunk,branchesиtags, файлы положите вtrunk. - Загрузите проект в репозиторий:
svn import /tmp/myproject file:///var/svn/repos/myproject -m "initial import". - Заберите рабочую копию:
svn checkout file:///var/svn/repos/myproject/trunk myproject.
Исходная папка после импорта остаётся как была, Subversion о ней ничего не знает. Работать нужно в той папке, которую создал checkout: в ней появилась служебная .svn.
Команды набираются в терминале. На Windows подойдёт обычная командная строка, как с ней работать, мы показывали в инструкции про запуск скрипта через командную строку.
Для сетевого репозитория меняется только адрес: вместо file:/// будет https:// или svn://. Короткая форма команды svn co делает то же самое.
Ежедневный цикл работы с SVN
В книге Subversion типичный рабочий день описан шестью действиями. Их удобно запомнить по порядку: каждое следующее опирается на предыдущее.
- Обновить рабочую копию:
svn update. Подтягивает чужие коммиты. - Внести изменения. Файлы правите в любом редакторе, например в VS Code (как его настроить и открыть в нём терминал, есть в инструкции по настройке VS Code). Новые файлы ставите под контроль через
svn add, удаляете черезsvn delete, переименовываете черезsvn move. - Проверить, что поменялось:
svn statusдля общего списка иsvn diffдля построчных правок. - Исправить ошибки:
svn revert файлвозвращает файл к последней полученной версии. - Разрешить конфликты. Снова
svn update, а если правки пересеклись, тоsvn resolve. - Зафиксировать:
svn commit -m "что сделано".
svn update
svn add docs/new-page.md
svn status
svn diff
svn commit -m "Добавил страницу с инструкцией"
Чаще всего вы будете смотреть на вывод svn status. Первая буква в строке говорит, что случилось с файлом:
| Код | Что значит |
|---|---|
| ? | Файл не под контролем версий, в коммит не попадёт |
| A | Файл будет добавлен в репозиторий |
| M | Содержимое файла изменено |
| D | Файл будет удалён из репозитория |
| C | Конфликт: ваши правки пересеклись с чужими |
В Git тот же круг выглядит как pull, commit и push, только коммит сначала остаётся у вас на компьютере. Этот порядок отрабатывают на курсах по Git, и он без изменений переносится на SVN.
Ни svn status, ни svn diff на сервер не ходят, они сравнивают файлы с локальной копией. Чтобы увидеть, что изменилось в репозитории, добавьте ключ -u: svn status -u.
Ветки и слияние в SVN

Ветка в Subversion устроена просто: это копия папки внутри репозитория. Создаётся она одной командой прямо на сервере, без скачивания файлов:
svn copy ^/trunk ^/branches/my-feature -m "Ветка под новую фичу"
svn switch ^/branches/my-feature
Знак ^/ означает корень текущего репозитория, адрес целиком писать не нужно. Команда svn switch переключает рабочую копию на ветку.
В Git ветка устроена иначе, это указатель на коммит, а не копия папки. Чем ветка отличается от копии всего репозитория, мы разбирали в статье про форк в программировании.
Пока вы работаете в ветке, коллеги продолжают коммитить в trunk. Чтобы подтянуть их правки, в рабочей копии ветки выполните svn merge ^/trunk. Когда фича готова, переключитесь на trunk и влейте ветку обратно: svn merge ^/branches/my-feature, затем svn commit.
С версии 1.8 Subversion сам понимает, что вы возвращаете ветку в trunk. Ключ
--reintegrate, который встречается в старых инструкциях, объявлен устаревшим.
Перед таким слиянием рабочая копия trunk должна быть чистой: без локальных правок и обновлена до одной ревизии. Иначе Subversion откажется сливать.
Как работать с SVN через TortoiseSVN
Если командная строка пугает, те же задачи решаются через контекстное меню Проводника. Названия пунктов ниже взяты из русской справки клиента.
- Получить рабочую копию: правой кнопкой по пустой папке → «SVN Извлечь…», вставить адрес репозитория.
- Обновить: правой кнопкой по папке → «SVN Обновить».
- Добавить новый файл: подменю TortoiseSVN, пункт «Добавить…».
- Отправить изменения: «SVN Фиксировать…», в окне написать комментарий и отметить нужные файлы.
Состояние файлов клиент показывает значками поверх иконок, поэтому изменённый файл видно прямо в Проводнике. Разница с консолью только в интерфейсе: команды под капотом те же.
Частые ошибки и что с ними делать

Почти все проблемы новичков в SVN сводятся к пяти ситуациям.
Коммит отклонён, рабочая копия устарела
Симптом: svn commit падает с сообщением про out of date. Причина в том, что кто-то уже изменил этот файл на сервере.
Решение: выполните svn update, проверьте результат и закоммитьте ещё раз.
Файл в статусе C, конфликт
Ваши правки и чужие задели одни и те же строки. Рядом с файлом появятся временные копии с вашей и серверной версиями.
Решение: откройте файл, сведите правки руками и выполните svn resolve --accept working файл. Оставить целиком свою версию можно через --accept mine-full, целиком серверную через --accept theirs-full.
Сводить конфликты руками приходится и в Git, этот навык отдельно разбирают в курсах по GitHub, где учатся работать в команде через пул-реквесты.
Ошибка working copy locked
Обычно появляется, если предыдущая операция прервалась: закрыли терминал посреди обновления или отвалилась сеть.
Решение: выполните svn cleanup в корне рабочей копии. По справочнику SVN Book, эта команда снимает зависшие блокировки и доделывает незавершённые операции.
Новый файл не попал в коммит
В выводе svn status рядом с ним стоит знак вопроса. Subversion не берёт файлы под контроль сам.
Решение: svn add файл, затем снова svn commit.
Старый клиент не открывает рабочую копию
В версии 1.15 появился новый формат рабочей копии под функцию Pristines On Demand, она уменьшает папку .svn. По примечаниям к выпуску, такую копию открывает только клиент 1.15 или новее.
Решение: обновите клиент у всех, кто работает с этой папкой. По умолчанию svn checkout создаёт копию в старом формате, совместимом с клиентами 1.8–1.14.
SVN или Git: что выбрать
Новые проекты чаще начинают на Git, но SVN по-прежнему живёт в компаниях с давней историей кода. Выбирать обычно не приходится: работаете с тем, что уже стоит в команде.
| Признак | SVN | Git |
|---|---|---|
| Модель | Централизованная, один сервер | Распределённая, полная история у каждого |
| Номер версии | Сквозная ревизия: r1, r2, r3 | Хеш коммита |
| Работа без сети | Коммит невозможен | Коммиты локально, отправка позже |
| Ветка | Копия папки на сервере | Указатель на коммит |
| Бинарные файлы | Есть блокировки svn lock |
Нужны внешние инструменты |
Блокировки у SVN сильнее, чем у Git. Для картинок, 3D-моделей и документов, которые нельзя слить построчно, svn lock (глава о блокировках в SVN Book) запирает файл в репозитории: пока вы его правите, закоммитить изменения в него не сможет никто другой. Это удобно командам с тяжёлыми ассетами, например геймдизайнерам и художникам игровых студий.
Если команда переезжает на Git, не обязательно бросать историю. Инструмент git svn гоняет изменения между репозиториями SVN и Git в обе стороны.
Где освоить системы контроля версий
Команды из этой статьи закрывают ежедневную работу с SVN. Для уверенной работы в команде пригодится общее понимание контроля версий: ветки, ревью, разрешение конфликтов. Курсы обычно учат этому на Git, а после него команды Subversion выглядят знакомо: тот же цикл, другая модель хранения.
Программы, где Subversion разбирают отдельно, собраны в разделе курсов по SVN. Ниже подборка курсов по Git из нашего каталога. О том, чем занимается отдельный специалист по этому направлению, мы писали в обзоре профессии Git-специалиста.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Gitlab CI/CD с нуля Перейти на сайт курса | 16 250 ₽ | 1354 ₽/мес. | 4 месяца | Обзор курса | |
| Gitlab CI/CD Перейти на сайт курса | 25 000 ₽ | 6250 ₽/мес. | 58 часов | Обзор курса | |
| Основы Git Перейти на сайт курса | 3999 ₽ | 2749 ₽/мес. | 2 месяца | Обзор курса | |
| Обучение Git Перейти на сайт курса | 22 500 ₽ | - | 1 месяц | Обзор курса | |
| Основы Git Перейти на сайт курса | Бесплатно | - | 1 месяц | Обзор курса |
Больше программ — в полном каталоге курсов по Git




