Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Система управления версиями.ppt
Скачиваний:
107
Добавлен:
10.09.2019
Размер:
1.48 Mб
Скачать

Имена файлов

Имя объекта файловой системы в Subversion образуется по тем же правилам, что и в UNIX-подобных операционных системах:

существует только одна корневая директория,

элементы пути разделяются косой чертой («/»).

Объектами файловой системы являются файлы и директории (а также символические ссылки, которые эмулируются из обычных файлов путём установки атрибута svn:special).

Номера ревизий

Номер ревизии в Subversion — это натуральное число (или 0 для самой первой ревизии), адресующее номер состояния хранилища в процессе изменения содержащихся в нём данных. Каждая успешная фиксация изменений порождает ровно одну новую ревизию в хранилище, то есть N-я ревизия — это состояние хранилища после N-й фиксации.

В Subversion ревизия характеризует состояние не отдельного файла, а всего хранилища в целом. Например, ревизия 32 (обведено пунктиром на рисунке) — это состояние трёх файлов и двух директорий, существовавших в хранилище на тот момент.

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

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

Над объектами файловой системы в хранилище Subversion могут быть произведены следующие операции (в скобках указано краткое именование операции в обозначениях команды svn status):

Добавление - add (A). Добавление объекта в файловую систему. Добавленный объект не имеет истории ревизий.

файл /main.c был добавлен в ревизии 27.

Модификация - modify (M). Модификация объекта, например, изменение содержимого файла или изменение свойств файла или директории.

файл /main.c был модифицирован в ревизии 28.

Удаление - delete (D). Удаление файла из головной и последующих ревизий. При этом файл остаётся в предыдущих ревизиях.

файл /main.c был удалён в ревизии 30.

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

Добавление с историей – added with history (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

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

Замена -replace (R+). Имеет место в случае, когда в одной ревизии произведено и удаление объекта (D), и добавление с историей (A+) объекта с тем же самым именем.

Хотя имя при операции замены остаётся неизменным, Subversion рассматривает объект до и после замены как два различных объекта с различными историями ревизий (история старого заканчивается в точке замены, история нового наследуется от источника копирования и продолжается далее).

-в ревизии 30 файл /file.txt был заменён:

-старый файл /file.txt удалён,

-новый файл с тем же именем скопирован с

файла /bar.txt@29.

Фиксация

изменений

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

Рабочая копия - это созданная клиентской программой Subversion локальная копия части данных из хранилища, содержащая также некоторую служебную информацию:

- скрытые директории с именем .svn

Служебная информация необходима для правильного функционирования рабочей копии; что-либо менять в служебных данных нельзя.

Минимальной единицей данных, которую можно получить из хранилища как рабочую копию, является директория.

Можно также извлечь директорию без поддиректорий, а потом докачивать их по мере необходимости.

Рабочая копия в Subversion всегда соответст- вует ровно одной директории хранилища.

Извлечь из хранилища отдельный файл как рабочую копию невозможно.

Рабочая копия является самодостаточной в том смысле, что Subversion не хранит каких-либо данных, относящихся к рабочей копии, вне её.

Имея одну рабочую копию, можно сделать ещё несколько копий простым копированием без затрат сетевого трафика.

Создание рабочей копии является первым и необходимым этапом для фиксации локальных изменений.

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

Ваша рабочая копия - это ваше личное рабочее пространство.

Subversion как не смешивает с вашими изменения, вносимые другими, так и не делает доступными для других изменения, сделанные вами, пока вы сами не прикажете сделать это.

После того, как вы внесли изменения в файлы вашей рабочей копии и убедились в том, что они корректно работают, Subversion предлагает вам команды «публикации» (записи в хранилище) ваших изменений, в результате чего они станут доступными для всех участников проекта.

Если другие участники проекта опубликовали свои изменения, Subversion предлагает вам команды для объединения (путем чтения информации из хранилища) этих изменений с вашей рабочей копией.

Предположим, что есть хранилище,

содержащее два программных проекта: paint и calc.

Каждый проект располагается в своем собственном каталоге.

Соседние файлы в папке Лекции