SVN

Системы управления версиями

Системы управления версиями:

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

Виды систем управления версиями:

  • CVS,
  • Subversion,
  • Microsoft Visual SourceSafe,
  • Mercurial,
  • Git.

Subversion (SVN)

  • Официальный сайт — http://subversion.apache.org/.
  • Модель работы:
  1. Централизованная система (в отличие от распределенных систем, таких как Git или Mercurial).
  2. Копирование — Изменение — Слияние, т.е. пользователь забирает файл себе, изменяет его и закачивает обратно.
  3. Блокирование — Изменение — Разблокирование. Когда пользователь выбирает из репозитария файл, он блокируется на запись для всех остальных.
  4. Используется дельта-компрессия.
  5. Репозиторий (repository).
  6. Рабочая копия/working copy (WC).
  • Типы репозиториев:
  1. Базы данных на основе Berkeley DB.
  2. Обычные файлы специального формата.
  • Доступ к репозиторию
  1. Локальная или сетевая файловая система.
  2. WebDAV/DeltaV (поверх http или https) с использованием модуля mod_dav_svn для Apache 2.
  3. Собственный протокол ‘svn’ (порт по умолчанию 3690).

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

  • Файловая система:
  1. Объектами файловой системы являются файлы и директории.
  2. ‘Двумерная’ файловая система.
  3. ‘Координаты’: имя и номер ревизии. /main.c@29.
  • Имена файлов:
  1. Одна корневая директория.
  2. Элементы пути разделяются косой чертой ‘/’.
  • Номера ревизий:
  1. Это натуральное число.
  2. Минимальный номер ревизии 0 содержит только пустую корневую директорию.
  3. Максимальный номер ревизии соответствует самому последнему состоянию хранилища.
  • Транзакции:
  1. Атомарность,
  2. Изоляция.

Операции над файловой системой

SVN

Структура хранилища (репозитория)

Здесь есть три основных понятия: trunk, branch, tags.

  • Trunk — основное направление разработки.
  • Branch (‘Ветка’) — направление разработки, которое существует независимо от другого направления, но имеет с ним общую историю.
  • Tag (‘Метка’) — выделенная явно, через создание отдельной папки версия файлов проекта в определенный момент времени.

SVN

Использование Subversion

Рассмотрим пошагово основные команды. В скобках указаны команды для командной строки.

  • Создание хранилища (svnadmin create).
  • Создание рабочей копии (svn checkout).
  • Изменения файлов и директорий в рабочей копии.
  • Для файловых операций (svn delete, svn move, svn copy).
  • Просмотр локальных (еще не зафиксированных) изменений в рабочей копии (svn diff).
  • Любые локальные изменения, если они признаны неудачными, можно откатить (svn revert).
  • Получение в свою рабочую копию свежих изменений, зафиксированных в хранилище другими пользователями (svn update).
  • Фиксация своих изменений в хранилище (svn commit).
  • Регулярное обновление рабочей копии последними зафиксированными изменениями (svn update).

Работа с ветвями

  • Cоздание ветви (svn copy).
  • Переключение имеющейся рабочей копии на ветвь (svn switch) или создание новой рабочей копии путем закачки (svn checkout).
  • Изменение файлов и директорий в рабочей копии, фиксация этих изменений (svn commit).
  • Копирование в ветвь свежих изменений из родительской ветви, сделанных после ветвления (svn merge, svn commit).
  • Копирование изменений с ветви в родительскую ветвь (svn merge, svn commit).
  • Удаление ветви (svn delete), если ее жизненный цикл закончен.



Добавить комментарий

Ваш e-mail не будет опубликован.