Команда svn в Linux
Полный справочник команд Linux
SVN (Subversion) — это система контроля версий с открытым исходным кодом, используемая для управления историей изменений файлов и каталогов. Она помогает командам разработчиков совместно работать над проектами, отслеживать изменения кода и поддерживает откат версий.
Аналогия: представьте SVN как машину времени. Она записывает каждое изменение каждого файла в вашем проекте, как точки сохранения в игре. Вы можете в любой момент вернуться к любой предыдущей версии.
Основные концепции SVN
Репозиторий
Репозиторий SVN — это место, где хранятся все данные версий, эквивалентное центральной базе данных. Он поддерживает полную историю проекта.
Рабочая копия
Это копия проекта на вашей локальной машине. Здесь вы можете вносить изменения, а затем зафиксировать изменения в репозитории.
Ревизия
Каждый коммит создаёт глобально уникальный номер ревизии для идентификации конкретного состояния проекта.
Установка и настройка SVN
Установите SVN
В большинстве дистрибутивов Linux его можно установить через менеджер пакетов:
Пример
sudo apt-get install subversion
# CentOS/RHEL
sudo yum install subversion
# Fedora
sudo dnf install subversion
Проверка установки
svn --version
Подробное объяснение распространённых команд SVN
Извлечение кода
Получите код из SVN-репозитория на вашу локальную машину:
Пример
# Пример:
svn checkout http://svn.example.com/svn/project/trunk myproject
Общие параметры:
--username: Укажите имя пользователя--password: Укажите пароль--non-interactive: Неинтерактивный режим
Обновление кода
Синхронизируйте локальную рабочую копию с последней версией в репозитории:
Пример
# Обновление до конкретной ревизии
svn update -r 1234
Фиксация изменений
Зафиксируйте локальные изменения в репозитории:
svn commit -m "提交说明"
Просмотр статуса
Просмотреть статус изменений рабочей копии:
svn status
Пояснение к флагам состояния:
A: Новый файл добавленM: Изменённый файлD: Удалённый файл?: Неверсионированный файл!: Отсутствующий файл
Добавление файлов
Поместить новые файлы под контроль версий:
Пример
# Добавить все новые файлы в текущем каталоге
svn add --force .
Удаление файлов
Удалить файлы из системы контроля версий:
svn delete 文件名
Просмотр журнала
Просмотр истории коммитов:
Пример
# Просмотреть журнал конкретного файла
svn logИмя файла
# Ограничить количество отображаемых записей
svn log -l 10
Сравнение различий (Diff)
Просмотр содержимого изменений:
Пример
svn diff
# Сравнить две ревизии
svn diff -r 100:200
Откатить изменения
Отбросить локальные изменения:
Пример
# Откатить все изменения
svn revert -R .
Разрешить конфликты
Конфликты могут возникать, когда несколько человек изменяют один и тот же файл:
Пример
svn status
# Пометить как разрешённый после разрешения конфликта
svn resolve --acceptworking конфликтный файл
Расширенные операции
Ветвление и слияние
Пример
svn copyURL источника URL назначения-m "Описание создания ветки"
# Слияние ветки
svn mergeURL источника[@Ревизия]Путь к рабочей копии
Управление тегами
Пример
svn copy http://svn.example.com/svn/project/trunk
http://svn.example.com/svn/project/tags/1.0
-m "Создать тег для версии 1.0"
Управление свойствами
Пример
svn propset svn:keywords "Date Rev Author"Имя файла
# Просмотр свойства
svn propgetsvn:keywords имя файла
Практические советы
-
Игнорировать файлы: Создать
svn:ignoreсвойство для исключения файлов, не требующих контроля версийsvn propset svn:ignore "*.log" .
-
Просмотр подробной информации о файле:
svn info 文件名
-
Экспорт чистой копии(без каталога .svn):
svn export 仓库URL 本地目录
-
Очистка рабочей копии:
svn cleanup
Решение распространённых проблем
Ошибка аутентификации
Пример
rm -rf ~/.subversion/auth/
Блокировка рабочей копии
svn cleanup
Процесс разрешения конфликтов
- Обновите рабочую копию:
svn update - Разрешите конфликты вручную (отредактируйте файл)
- Отметьте как разрешённый:
svn resolve --accept working 文件名 - Зафиксируйте изменения:
svn commit -m "解决冲突"
Лучшие практики
- Обновляйте рабочую копию перед фиксацией
- Пишите осмысленные сообщения фиксации
- Фиксируйте небольшие изменения часто, а не отправляйте сразу большое количество правок
- Используйте ветки для разработки функциональности
- Регулярно создавайте резервную копию репозитория
Сравнение SVN и Git
| Характеристика | SVN | Git |
|---|---|---|
| Архитектура | Централизованная | Распределённый |
| Скорость | Медленнее | Быстрее |
| Ветвление/Слияние | Более сложная | Простая и эффективная |
| Работа в автономном режиме | Ограниченная поддержка | Полная поддержка |
| Кривая обучения | Более пологая | Более крутая |
Итог
SVN — это мощная и стабильная система управления версиями, особенно подходящая для проектов, требующих строгого контроля прав доступа и централизованного управления. Освоив эти базовые команды и концепции, вы сможете эффективно использовать SVN для повседневной работы с контролем версий. Помните, что основа контроля версий — частые коммиты и хорошие привычки коммитов, которые обеспечат надежную страховку для разработки вашего проекта.
Другие расширения