- •Система контроля версий
- •Системы контроля версий (Version Control System, VCS)
- •Система контроля версий (VCS) умеет:
- •Хранилище (репозиторий)
- ••Хранилище является разновидностью файл-сервера, однако не совсем обычного.
- •Назначение
- •История
- •Основные события истории развития Subversion:
- ••В настоящее время Subversion используется многими сообществами разработчиков открытого программного обеспечения.
- •Возможности SVN
- •Возможности SVN (продолжение)
- •Атеперь для «чайников»
- •Архитектура SVN
- •Типы репозиториев
- •Модель работы
- •Всвязи с тем, что разработчики работают только с локальными копиями, могут возникать трудности,
- •Проблема разделения файлов
- •Проблема потери изменений (иллюстрация)
- •Модель Блокирование-Изменение-Разблокирование
- •Проблемой модели блокирование-изменение-разблокирование является то, что она немного ограниченная и часто доставляет неудобства
- •Модель Копирование-Изменение-Слияние
- •Модель копирование-изменение-слияние
- •Конфликт
- •Вывод
- •Витоге
- •Список основных терминов
- •Список основных терминов (продолжение)
- •Структура хранилища (репозитория)
- •Основные концепции
- •Файловая система
- ••С точки зрения пользователя хранилище Subversion представляет собой «двумерную» файловую систему.
- •Имена файлов
- •Операции над файловой системой
- •Операции над файловой системой
- •Операции над файловой системой
- •Операции над файловой системой
- •Фиксация
- •Рабочая копия
- ••Рабочая копия в Subversion всегда соответст- вует ровно одной директории хранилища.
- ••Ваша рабочая копия - это ваше личное рабочее пространство.
- •Предположим, что есть хранилище,
- •Для того, чтобы создать рабочую копию, нужно получить какой-либо из подкаталогов хранилища.
- •Транзакции
- ••Изоляция гарантирует, что промежуточные состояния хранилища внутри транзакции не видны другим транзакциям и
- •Клиент командной строки Subversion
- •Команды svn
- •Типичная итерация рабочего цикла с Subversion:
- •- если файл или директорию в рабочей копии нужно удалить, переименовать, переместить
- •Краткий справочник svn
- •Создание рабочей копии
- •Изменение файлов и директорий в рабочей копии
- •svn move
- •svn copy
- •svn update
- •svn commit
- •svn revert
- •svn add file_name
- •svn status
- •Цикл работы с ветвями
Для того, чтобы создать рабочую копию, нужно получить какой-либо из подкаталогов хранилища.
Например, если вы получите /calc, у вас будет рабочая копия наподобие этой:
$svn checkout http://svn.example.com/repos/calc
Acalc/Makefile
Acalc/integer.c
Acalc/button.c Checked out revision 56.
$ls -A calc
Makefile integer.c button.c .svn/
Буквы А говорят о том, что Subversion добавил этот элемент в вашу рабочую копию.
Теперь у вас есть личная копия каталога /calc хранилища, с одним небольшим добавлением - каталогом .svn, содержащим, служебную информацию, необходимую Subversion.
Транзакции
•Работа с хранилищем в Subversion организована в форме транзакций со свойствами атомарности и изоляции.
•Система управления версиями гарантирует целостность, непротиворечивость и доступность хранилища в любой момент времени.
•Атомарность фиксаций (atomic commits) - изменения в нескольких файлах или директориях фиксируются единой транзакцией, порождая при этом одну ревизию.
•В случае неудачной фиксации (сбое или ошибка) система гарантирует что хранилище не окажется в частично изменённом состоянии - в хранилище попадут либо все изменения, либо (при неудаче) ни одного.
•Изоляция гарантирует, что промежуточные состояния хранилища внутри транзакции не видны другим транзакциям и пользователям. Например, если один пользователь фиксирует одной транзакцией изменения в нескольких файлах, то другие пользователи не могут увидеть такого состояния хранилища, в котором часть файлов уже изменена, а часть - не изменена.
•Рабочая копия Subversion, в отличие от хранилища, при сбое может оказаться в промежуточном или заблокированном состоянии.
Клиент командной строки Subversion
Для того что бы воспользоваться клиентом командной строки, необходимо ввести svn и желаемую подкоманду, а также любые другие параметры командной строки, которые хотите задействовать.
Порядок, в котором подкоманды и параметры командной строки должны быть использованы, не играет существенной роли.
Например, всё нижеприведённое есть правильное использование svn status:
•$ svn -v status
•$ svn status -v
•$ svn status -v myfile
verbose (-v) - выражает просьбу комментировать процесс выполнения операции как можно более детально. Это может привести к выводу дополнительных полей, подробной информации по каждому файлу или более полной информации о выполняемой операции.
Команды svn
Локальные и удалённые формы команд
Все команды клиента Subversion можно разделить на следующие группы:
•модифицирующие рабочую копию;
•модифицирующие хранилище;
•модифицирующие и рабочую копию, и хранилище;
•не модифицирующие ничего.
Типичная итерация рабочего цикла с Subversion:
•Обновление рабочей копии из хранилища - svn update.
•Создание рабочей копии из хранилища - svn checkout.
•Изменение рабочей копии:
- изменения директорий и информации о файлах производится средствами Subversion,
-изменения содержимого файлов производятся текстовыми редакторами, средствами разработки и
т.п. (Subversion никак не задействован).
-новые (еще не зафиксированные в хранилище) файлы и директории нужно добавить - svn acid, то есть передать под управление Subversion.
- если файл или директорию в рабочей копии нужно удалить, переименовать, переместить
или скопировать необходимо использовать: svn mkdir, svn delete, svn move, svn copy;
- просмотр состояния рабочей копии и локальных (ещё не зафиксированных) изменений
svn info, svn status, svn diff;
- любые локальные изменения, если они признаны неудачными, можно откатить svn revert.
- фиксация своих изменений (и/или результатов слияния) в хранилище (svn commit).
Краткий справочник svn
Создание хранилища
svnadmin create – создается новый пустой репозиторий
Синтаксис
svnadmin create REPOS_PATH
Описание
Создается новый пустой репозиторий в указанном месте. Если директорий не существует, то он создается.
Создание рабочей копии
svn checkout |
(svn co) |
Синтаксис |
|
svn checkout URL[@REV]... [PATH]
Описание
Создает рабочую копию на основе данных из хранилища (извлечение файлов проекта из репозитория).
Изменение файлов и директорий в рабочей копии
svn delete - удаляет объект из рабочей копии или хранилища.
Синтаксис
svn delete PATH... |
(svn del) |
svn delete URL... |
|
Описание |
|
Объекты определенные через PATH вносятся в план удаления следующей фиксацией изменений.
Объекты определенные через URL сразу же фиксируются как удаленные.