SVK — децентрализованная система контроля версий, реализованная на языке Perl и построенная поверх протокола Subversion (SVN). Проект был разработан как расширение возможностей централизованных SVN‑репозиториев, предоставляя пользователям работу с локальными зеркалами и автономными ветвлениями без необходимости постоянного доступа к центральному серверу. SVK сочетает в себе подходы распределённых VCS и совместимость с существующей инфраструктурой Subversion и CVS.
Основные идеи SVK включают локальные депо и оффлайн‑коммиты, исторически чувствительное слияние и возможность синхронизации с удалёнными SVN/CVS‑репозиториями. Проект позволял разработчикам вести параллельную работу в локальной среде, выполнять реорганизацию истории, объединять изменения с учётом их контекста и позднее отправлять изменения обратно в центральные репозитории. В документации проекта отмечалось, что SVK можно использовать как инструмент миграции и интеграции для команд, привыкших к Subversion, но желающих преимуществ децентрализованных рабочих процессов.
- Архитектура поверх Subversion: использует серверные и клиентские механизмы SVN для совместимости с существующими репозиториями.
- Локальные репозитории/зеркала: поддержка создания локальных копий репозиториев для работы без сети.
- Оффлайн‑коммиты: возможность совершать коммиты в локальное депо и позже синхронизировать их с центральным сервером.
- Исторически чувствительное слияние: алгоритмы слияния, сохраняющие контекст изменений и снижающие количество конфликтов при интеграции веток.
- Интеграция с SVN и CVS: инструменты для взаимодействия и синхронизации изменений с существующими централизованными репозиториями.
- Управление ветвлениями: поддержка создания и объединения веток в рамках локальных и удалённых депо.
- Командная работа: рабочие процессы, ориентированные на совместную разработку с возможностью обмена патчами и синхронизации историй.
- Реорганизация истории: функции для изменения и упорядочения коммитов в локальном депо перед публикацией.