Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / Разные источники / Контроль версий (Вики).doc
Скачиваний:
30
Добавлен:
23.03.2015
Размер:
549.38 Кб
Скачать

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

Над объектами файловой системы в хранилище 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). Наличие чистой копии позволяет быстро и без обращения к хранилищу выполнять операции просмотра и отката локальных изменений. Однако размер рабочей копии на диске примерно в два раза больше (данные + чистая копия данных), чем размер самих данных. Такой подход обусловлен тем, что дисковые ресурсы дешевле и доступнее, чем ресурсысети передачи данных.

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