Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпорка по ТП.docx
Скачиваний:
14
Добавлен:
31.07.2019
Размер:
149.74 Кб
Скачать
  1. Система Subversion

Subversion (SVN) был разработан в 2000 году по инициативе фирмы CollabNet и по сравнению с SVS:

  • обеспечивает лучшее управление изменениями структуры каталогов;

  • более эффективно хранит двоичные файлы;

  • имеет стандартную возможность возврата к состоянию проекта на определенный момент времени

Subversion — централизованная система (в отличие от распределённых систем, таких, как Git или Mercurial), то есть данные хранятся в едином хранилище. Хранилище может располагаться на локальном диске или на сетевом сервере .

Архитектура Subversion

Модель работы

Клиенты копируют файлы из хранилища, создавая локальные рабочие копии, затем вносят изменения в рабочие копии и публикуют эти изменения в хранилище. Несколько клиентов могут одновременно обращаться к хранилищу. При сохранении новых версий используется дельта-компрессия: система находит отличия новой версии от предыдущей и записывает только их, избегая дублирования данных

  1. Хранилище, его структура, правки. Команды SVN для работы с хранилищем.

Представляет собой последовательность фиксированных состояний размещенной в ней файловой системы Хранилище создается с помощью входящей в состав поставки Subversion утилиты SvnAdmin путем выполнения команды: svnadmin create <путь к репозиторию>

Импорт в хранилище

Сразу после создания хранилище не содержит ничего, кроме пустого корневого каталога

Первоначальное заполнение хранилища осуществляется командой

svn import <дерево> <URL хранилища> -m “Initial import”

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

Доступ к хранилищу

Получить доступ к хранилищу Subversion можно различными способами – на локальном диске или через ряд сетевых протоколов .

соответствие разных URL-схем возможным методам доступа

Файловая система хранилища

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

На рисунке показано хранилище, содержащее два программных проекта: calc и paint

Правки

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

Последовательность правок

Глобальность правок

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

Просмотр списка файлов

Список файлов того или иного проекта из репозитория можно просмотреть с помощью команды

svn list <URL каталога хранилища> -v

Флаг –v указывает на необходимость вывода полной информации о правке, включая ее номер, дату создания и т.д.

Смешивание правок

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

4 calc/Makefile

4 calc/integer.c

4 calc/button.c

На данный момент рабочий каталог полностью соответствует правке 4 в хранилище

Допустим, что разработчик внес изменения в файл button.c и зафиксировал эти изменения.При отсутствии других фиксаций будет создана правка под номером 5, и теперь его рабочая копия выглядит следующим образом

4 calc/Makefile

4 calc/integer.c

5 calc/button.c

Предположим, что после этого второй разработчик фиксирует изменения integer.c, создавая правку 6

Если первый разработчик актуализирует свою рабочую копию, то она станет выглядеть так

6 calc/Makefile

6 calc/integer.c

6 calc/button.c

Изменения, внесенные в integer.c вторым разработчиком будут отражены в рабочей копии первого разработчика, как и его собственные, сделанные в файле button.c

Текст Makefile в правках 4, 5 и 6 идентичен, однако Subversion проставляет номер правки 6 для рабочей копии Makefile, чтобы показать что файл не устарел . Таким образом, после выполнения обновления первым разработчиком его рабочей копии, она будет полностью соответствовать текущему состоянию хранилища

Фиксация локальных изменений

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

svn commit <параметры> <путь к файлу>

Например

svn commit -F msg foo.c

В результате в хранилище создается новая правка

  1. Понятия рабочей копии и служебного каталога. Команды SVN для работы с рабочими копиями.

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

Рабочая копия – это моментальный «снимок» состояния хранилища или некоторой его части, сохраненный на компьютере клиента. Рабочая копия представляет собой обычное дерево каталогов, содержащее набор различных файлов. Файлы рабочей копии могут произвольным образом редактироваться разработчиком, оставаясь недоступными другим участникам группы. После внесения изменений в файлы рабочей копии и проверки их корректности разработчик может записать свою версию в хранилище, т.е. опубликовать

Если другие участники проекта производили редактирование тех же файлов и уже опубликовали свои изменения, Subversion предоставляет возможность для объединения этих изменений с рабочей копией данного разработчика

Служебный каталог

Рабочая копия содержит дополнительные файлы, созданные и обслуживаемые Subversion, которые используются при выполнении слияний. В частности, каждый каталог рабочей копии содержит подкаталог с именем .svn который называется служебным каталогом рабочей копии . Файлы в служебном каталоге помогают определить какие файлы рабочей копии содержат неопубликованные изменения, и какие файлы устарели по отношению к файлам других участников

Обновление рабочей копии

Для актуализации рабочей копии используется команда

svn update <путь к рабочей копии>

При этом обновляются только те файлы, в которые вносились изменения между обновлениями

Служебный каталог

В служебном каталоге .svn для каждого файла рабочего каталога записывается следующая информация:

  • на какой правке основан рабочий файл (это называется рабочая правка файла);

  • временная (ударение на последний слог) метка, определяющая, когда рабочая копия последний раз обновлялась из хранилища

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]