Ответ
Да, работал с SVN в legacy-проектах и при миграции на Git. SVN — это централизованная система контроля версий, которая отличается от распределенной архитектуры Git.
Основные команды, которые использовал:
# Клонирование репозитория
svn checkout https://svn.example.com/project/trunk project-folder
# Обновление локальной копии
svn update
# Проверка статуса изменений
svn status
# Добавление новых файлов
svn add filename.php
# Коммит изменений
svn commit -m "Исправлена ошибка авторизации"
# Создание ветки
svn copy https://svn.example.com/project/trunk
https://svn.example.com/project/branches/feature-auth
-m "Создание ветки для новой системы авторизации"
# Слияние изменений
svn merge https://svn.example.com/project/branches/feature-auth
Ключевые отличия от Git:
- Централизованная архитектура — нет локальных репозиториев, все операции с сервером
- Ветвление через копирование — ветки создаются как копии директорий
- Номера ревизий — глобальные, последовательные номера для всего репозитория
- Меньше возможностей для локальной работы — многие операции требуют подключения к серверу
Пример разрешения конфликтов:
# При обновлении получаем конфликт
svn update
# Конфликтующие файлы помечаются как 'C'
# Ручное разрешение конфликта
# Редактируем файл, убираем маркеры конфликта <<<<<<< .mine, =======, >>>>>>> .r123
# Сообщаем SVN, что конфликт разрешен
svn resolved filename.php
# Коммитим изменения
svn commit -m "Разрешен конфликт слияния"
Миграция с SVN на Git: Участвовал в нескольких миграциях, используя git svn для сохранения истории коммитов.