Команда svn в Linux

Linux 命令大全Полный справочник команд Linux


SVN (Subversion) — это система контроля версий с открытым исходным кодом, используемая для управления историей изменений файлов и каталогов. Она помогает командам разработчиков совместно работать над проектами, отслеживать изменения кода и поддерживает откат версий.

Аналогия: представьте SVN как машину времени. Она записывает каждое изменение каждого файла в вашем проекте, как точки сохранения в игре. Вы можете в любой момент вернуться к любой предыдущей версии.


Основные концепции SVN

Репозиторий

Репозиторий SVN — это место, где хранятся все данные версий, эквивалентное центральной базе данных. Он поддерживает полную историю проекта.

Рабочая копия

Это копия проекта на вашей локальной машине. Здесь вы можете вносить изменения, а затем зафиксировать изменения в репозитории.

Ревизия

Каждый коммит создаёт глобально уникальный номер ревизии для идентификации конкретного состояния проекта.


Установка и настройка SVN

Установите SVN

В большинстве дистрибутивов Linux его можно установить через менеджер пакетов:

Пример

# Ubuntu/Debian
sudo apt-get install subversion

# CentOS/RHEL
sudo yum install subversion

# Fedora
sudo dnf install subversion

Проверка установки

svn --version

Подробное объяснение распространённых команд SVN

Извлечение кода

Получите код из SVN-репозитория на вашу локальную машину:

Пример

svn checkout [URL-адрес репозитория] [Локальный каталог]
# Пример:
svn checkout http://svn.example.com/svn/project/trunk myproject

Общие параметры:

  • --username: Укажите имя пользователя
  • --password: Укажите пароль
  • --non-interactive: Неинтерактивный режим

Обновление кода

Синхронизируйте локальную рабочую копию с последней версией в репозитории:

Пример

svn update
# Обновление до конкретной ревизии
svn update -r 1234

Фиксация изменений

Зафиксируйте локальные изменения в репозитории:

svn commit -m "提交说明"

Просмотр статуса

Просмотреть статус изменений рабочей копии:

svn status

Пояснение к флагам состояния:

  • A: Новый файл добавлен
  • M: Изменённый файл
  • D: Удалённый файл
  • ?: Неверсионированный файл
  • !: Отсутствующий файл

Добавление файлов

Поместить новые файлы под контроль версий:

Пример

svn addИмя файла
# Добавить все новые файлы в текущем каталоге
svn add --force .

Удаление файлов

Удалить файлы из системы контроля версий:

svn delete 文件名

Просмотр журнала

Просмотр истории коммитов:

Пример

svn log
# Просмотреть журнал конкретного файла
svn logИмя файла
# Ограничить количество отображаемых записей
svn log -l 10

Сравнение различий (Diff)

Просмотр содержимого изменений:

Пример

# Сравнить рабочую копию с базовой ревизией
svn diff
# Сравнить две ревизии
svn diff -r 100:200

Откатить изменения

Отбросить локальные изменения:

Пример

svn revertИмя файла
# Откатить все изменения
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 имя файла

Практические советы

  1. Игнорировать файлы: Создатьsvn:ignoreсвойство для исключения файлов, не требующих контроля версий

    svn propset svn:ignore "*.log" .
  2. Просмотр подробной информации о файле:

    svn info 文件名
  3. Экспорт чистой копии(без каталога .svn):

    svn export 仓库URL 本地目录
  4. Очистка рабочей копии:

    svn cleanup

Решение распространённых проблем

Ошибка аутентификации

Пример

# Удалить сохранённые данные аутентификации
rm -rf ~/.subversion/auth/

Блокировка рабочей копии

svn cleanup

Процесс разрешения конфликтов

  1. Обновите рабочую копию:svn update
  2. Разрешите конфликты вручную (отредактируйте файл)
  3. Отметьте как разрешённый:svn resolve --accept working 文件名
  4. Зафиксируйте изменения:svn commit -m "解决冲突"

Лучшие практики

  1. Обновляйте рабочую копию перед фиксацией
  2. Пишите осмысленные сообщения фиксации
  3. Фиксируйте небольшие изменения часто, а не отправляйте сразу большое количество правок
  4. Используйте ветки для разработки функциональности
  5. Регулярно создавайте резервную копию репозитория

Сравнение SVN и Git

Характеристика SVN Git
Архитектура Централизованная Распределённый
Скорость Медленнее Быстрее
Ветвление/Слияние Более сложная Простая и эффективная
Работа в автономном режиме Ограниченная поддержка Полная поддержка
Кривая обучения Более пологая Более крутая

Итог

SVN — это мощная и стабильная система управления версиями, особенно подходящая для проектов, требующих строгого контроля прав доступа и централизованного управления. Освоив эти базовые команды и концепции, вы сможете эффективно использовать SVN для повседневной работы с контролем версий. Помните, что основа контроля версий — частые коммиты и хорошие привычки коммитов, которые обеспечат надежную страховку для разработки вашего проекта.


Linux 命令大全Полный справочник команд Linux

Другие расширения