- •Subversion — Википедия
- •[Править] Общие сведения [править] Возможности
- •[Править] Модель работы
- •[Править] Типы репозиториев
- •[Править] Доступ к репозиторию
- •[Править] Основные концепции [править] Файловая система
- •[Править] Имена файлов
- •[Править] Номера ревизий
- •[Править] Оперативная и стержневая ревизии
- •[Править] Операции над файловой системой
- •[Править] Фиксация изменений [править] Рабочая копия
- •[Править] Транзакции
- •[Править] Локальные и удалённые формы команд
- •[Править] Структура хранилища [править] Структура проекта в хранилище
- •[Править] Ветви
- •[Править] Метки
- •[Править] Свойства (properties)
- •[Править] Свойства объектов файловой системы
- •[Править] Свойства файлов
- •[Править] Свойства директорий
- •[Править] Свойства ревизий
- •[Править] Использование Subversion [править] Рабочий цикл
- •[Править] Ветвление
- •[Править] Создание ветвей
- •[Править] Работа с ветвями
- •[Править] Слияние [править] Копирование изменений между ветвями
- •[Править] Другие применения команды svn merge
- •[Править] Создание хранилища
- •[Править] Subversion и cvs [править] Сравнение
- •[Править] Миграция с cvs на Subversion [править] Преобразование репозитория
- •[Править] Отличия в использовании [править] Различия в работе с файлами
- •[Править] Адресация состояния хранилища
- •[Править] Внутренняя структура [править] Уровни
- •[Править] Конфигурация клиента
- •[Править] Проблемы при переименовании файлов
- •[Править] Слабая поддержка слияния ветвей
- •[Править] Невозможность удаления данных из хранилища
- •[Править] Дополнительное программное обеспечение
- •[Править] Краткое описание
- •[Править] Лицензирование:
- •История файла
- •Использование файла
[Править] Операции над файловой системой
Над объектами файловой системы в хранилище Subversion могут быть произведены перечисленные ниже операции[27](см. рис. 1). В скобках указано краткое именование операции в обозначениях командыsvn status.
Добавление(A). Добавление объекта в файловую систему. Добавленный объект не имеет истории ревизий. Пример на рисунке:
файл /main.cбылдобавленв ревизии 27.
Модификация(M). Модификация объекта, например, изменение содержимого файла или изменение свойств файла или директории. Пример на рисунке:
файл /main.cбылмодифицированв ревизии 28.
Удаление(D). Удаление файла из головной и последующих ревизий. При этом файл остаётся в предыдущих ревизиях. Пример на рисунке:
файл /main.cбылудалёнв ревизии 30.
Добавление с историей(A+). Представляет собой копирование объекта внутри файловой системы хранилища, то есть объектимя_источника@ревизия_источникакопируется вимя_копии@HEAD. Скопированный объект наследует от источника историю ревизий до момента копирования (наследование истории показано на рисунке пунктирными связями). Примеры на рисунке:
в ревизии 29 директория /tags/R1была скопирована с директории/trunk@27;
в ревизии 31 файл /main.cбыл скопирован с/main.c@29, то есть с более ранней ревизии самого себя, таким образом, произведено восстановление ранее удалённого (в ревизии 30) файла с сохранением истории ревизий.
Замена(R+). Имеет место в случае, когда в одной ревизии произведено и удаление объекта (D), и добавление с историей (A+) объекта с тем же самым именем. Хотя имя при операции замены остаётся неизменным, Subversion рассматривает объектдоипослезамены как два различных объекта с различными историями ревизий (история старого заканчивается в точке замены, история нового наследуется от источника копирования и продолжается далее). Пример на рисунке:
в ревизии 30 файл /file.txtбылзаменён: старый файл/file.txtудалён, а новый файл с тем же именем скопирован с файла/bar.txt@29.
[Править] Фиксация изменений [править] Рабочая копия
Рабочая копия — это созданная клиентской программой Subversion локальная копия части данных из хранилища, содержащая помимо собственно данных некоторую служебную информацию (скрытые директории с именем .svn). Служебная информация необходима для правильного функционирования рабочей копии; что-либо менять в служебных данных нельзя. Минимальной единицей данных, которую можно получить из хранилища как рабочую копию, является директория (можно также извлечь директорию без поддиректорий, а потом докачивать их по мере необходимости). Другими словами, в Subversion рабочая копия всегда соответствует ровнооднойдиректории хранилища. Извлечь из хранилища отдельный файл как рабочую копию невозможно.
Особенностью Subversion (в отличие от других систем управления версиями) является то, что любая поддиректория рабочей копии также является полноценной рабочей копией, поскольку в каждой директории хранятся её служебные данные. Рабочая копия является самодостаточной в том смысле, что Subversion не хранит каких-либо данных, относящихся к рабочей копии, вне её. Поэтому, имея одну рабочую копию, можно сделать ещё несколько копий простым копированием без затрат сетевого трафика.
В служебных директориях рабочей копии, помимо прочего, хранится (в директориях .svn/text-base/) так называемаячистая копия(англ.pristine copy) — файлы рабочей копии в неизменённом виде, как они были извлечены из хранилища (для svn это ревизия с именем BASE). Наличие чистой копии позволяет быстро и без обращения к хранилищу выполнять операции просмотра и отката локальных изменений. Однако размер рабочей копии на диске примерно в два раза больше (данные + чистая копия данных), чем размер самих данных. Такой подход обусловлен тем, что дисковые ресурсы дешевле и доступнее, чем ресурсысети передачи данных.
Как правило, создание рабочей копии является первым и необходимым этапом для фиксации локальных изменений, поскольку зафиксировать в хранилище можно только изменения, сделанные в рабочей копии. Исключением являются операции, которые могут быть выполнены прямо в хранилище без создания рабочей копии.