- •Subversion — Википедия
- •[Править] Общие сведения [править] Возможности
- •[Править] Модель работы
- •[Править] Типы репозиториев
- •[Править] Доступ к репозиторию
- •[Править] Основные концепции [править] Файловая система
- •[Править] Имена файлов
- •[Править] Номера ревизий
- •[Править] Оперативная и стержневая ревизии
- •[Править] Операции над файловой системой
- •[Править] Фиксация изменений [править] Рабочая копия
- •[Править] Транзакции
- •[Править] Локальные и удалённые формы команд
- •[Править] Структура хранилища [править] Структура проекта в хранилище
- •[Править] Ветви
- •[Править] Метки
- •[Править] Свойства (properties)
- •[Править] Свойства объектов файловой системы
- •[Править] Свойства файлов
- •[Править] Свойства директорий
- •[Править] Свойства ревизий
- •[Править] Использование Subversion [править] Рабочий цикл
- •[Править] Ветвление
- •[Править] Создание ветвей
- •[Править] Работа с ветвями
- •[Править] Слияние [править] Копирование изменений между ветвями
- •[Править] Другие применения команды svn merge
- •[Править] Создание хранилища
- •[Править] Subversion и cvs [править] Сравнение
- •[Править] Миграция с cvs на Subversion [править] Преобразование репозитория
- •[Править] Отличия в использовании [править] Различия в работе с файлами
- •[Править] Адресация состояния хранилища
- •[Править] Внутренняя структура [править] Уровни
- •[Править] Конфигурация клиента
- •[Править] Проблемы при переименовании файлов
- •[Править] Слабая поддержка слияния ветвей
- •[Править] Невозможность удаления данных из хранилища
- •[Править] Дополнительное программное обеспечение
- •[Править] Краткое описание
- •[Править] Лицензирование:
- •История файла
- •Использование файла
[Править] Транзакции
Работа с хранилищем в Subversion организована в форме транзакцийсо свойствамиатомарностииизоляциииз набора свойствACID. Таким образом система управления версиями гарантирует целостность, непротиворечивость и доступность хранилища в любой момент времени.
Атомарностьфиксаций (англ.atomic commits) — изменения в нескольких файлах или директориях фиксируются единой транзакцией порождая при этом одну ревизию. В случае неудачной фиксации, при любом сбое или ошибке, система гарантирует что хранилище не окажется в частично изменённом состоянии — в хранилище попадут либо все изменения, либо (при неудаче) — ни одного.
Изоляциягарантирует, что промежуточные состояния хранилища внутри транзакции не видны другим транзакциям и пользователям. Например, если один пользователь фиксирует одной транзакцией изменения в нескольких файлах, то другие пользователи не могут увидеть такого состояния хранилища, в котором часть файлов уже изменена, а часть — не изменена.
Рабочая копия Subversion, в отличие от хранилища, при сбое может оказаться в промежуточном или заблокированном состоянии.
[Править] Локальные и удалённые формы команд
Все команды клиента Subversion можно разделить на следующие группы:
модифицирующие рабочую копию;
модифицирующие хранилище;
модифицирующие и рабочую копию, и хранилище;
не модифицирующие ничего.
[Править] Структура хранилища [править] Структура проекта в хранилище
Формально Subversion не накладывает каких-либо ограничений на файловую структуру проекта — она может быть какой угодно в рамках правил именования объектов файловой системы. Тем не менее, существуют рекомендации, призванные облегчить работу с ветвями и метками. В простейшем случае в корневой директории хранилища рекомендуется создать как минимум три поддиректории:
/.
trunk
branches
tags
где вся файловая структура проекта (основной линии разработки) должна содержаться в поддиректории trunk, поддиректорияbranchesдолжна содержатьветвипроекта, аtags—метки. Например, следующая структура директорий хранилища:
/.
trunk
branches
branch_1
tags
tag_1
tag_2
предполагает наличие у проекта (trunk) одной ветви «branch_1» и двух меток «tag_1» и «tag_2». Каждая из этих директорий (trunk,branch_1,tag_1иtag_2) содержит копию соответствующей версии проекта.
Если (под)проектов в хранилище несколько, то такая структура поддиректорий создается для каждого (под)проекта:
/.
project1
trunk
branches
tags
project2
trunk
branches
tags
то есть в корневой директории находятся директории проектов, и в каждом из них есть свои trunk,branches,tags, относящиеся только к этому проекту. Описанные структуры директорий хранилища являются лишь примерами, на практике хранилище можно организовать таким способом, который оптимально подходит в данном конкретном случае.[28][29]
Другим способом хранения нескольких проектов является создание нескольких хранилищ. В разных хранилищах следует располагать проекты, которые никак не связаны между собой, поскольку между хранилищами нельзя будет выполнить операции копирования, перемещения и слияния. Несколько хранилищ можно при необходимости объединить в одно с сохранением истории ревизий (путём импорта командой svnadmin loadс параметром--parent-dir).