Apache Subversion — это система управления версиями с централизованной архитектурой, предназначенная для хранения, отслеживания и управления изменениями в файлах и исходном коде. Разработанная как преемник традиционных систем контроля версий, Subversion предоставляет единое хранилище (репозиторий), в котором сохраняются версии объектов в виде снимков, и обеспечивает механизмы фиксации (commit), извлечения (checkout), обновления (update) и отката изменений. Система ориентирована на обеспечение целостности истории изменений, поддержку транзакционных операций и работу в распределённых командах с регламентированным доступом к репозиторию.
Проект реализует модель с централизованным сервером, где версиями управляет единый репозиторий, а пользователи выполняют операции клиент-серверного взаимодействия. Subversion поддерживает атомарные коммиты, метаданные о каждом изменении (автор, сообщение, временная метка) и хранение бинарных файлов наряду с текстовыми. Для работы предусмотрены как командная строка, так и графические клиенты и интеграции с системами сборки и средами разработки. Архитектурно система допускает расширение через плагины и настройки доступа на уровне путей в репозитории.
- Централизованный репозиторий: единое хранилище версий с разграничением доступа и контролем целостности истории.
- Атомарные коммиты: операции фиксации изменений выполняются целиком или не выполняются вовсе, что предотвращает частично применённые состояния.
- Версионность файлов и каталогов: отслеживание изменений как для отдельных файлов, так и для структуры каталогов, включая переименования и перемещения.
- Поддержка бинарных данных: эффективное хранение и дифференцирование как текстовых, так и бинарных файлов.
- Бранчинг и теги: создание веток и меток путём копирования данных внутри репозитория с малой накладной стоимостью.
- Журнал изменений (лог): хранение сообщений коммитов и метаданных для аудита и отслеживания истории.
- Контроль доступа: настройка прав на чтение и запись на уровне путей в репозитории и интеграция с аутентификацией.
- Клиент-серверное взаимодействие: поддержка протоколов доступа по HTTP(S) и собственных протоколов для подключения клиентов.
- Инструменты миграции и интеграции: утилиты для импорта из других систем контроля версий и интеграция с инструментами разработки и CI/CD.
- Восстановление и резервное копирование: механизмы создания резервных копий репозитория и восстановления данных при сбоях.