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

[Править] Ветви

Subversion использует «файловую» модель (такую же, как и в Perforce[30]) для реализации ветвей и меток, то есть ветвь является обычной директорией (можно также сделать ветвь из одного файла, а не директории). Новая ветвь создаётся командойsvn copy. Ветвь может быть создана в любой директории хранилища, однако имеет смысл придерживаться описанных вышесоглашенийо том, где создавать новые ветви. Более подробная информация о ветвях приведена в разделахВетвлениеиСлияние.

[Править] Метки

Создание метки также производится командой svn copy, то есть технически не отличается от создания ветви. Отличие только в способе использования: предполагается, что никто не будет изменять данные в метке (фиксировать в неё изменения). Например, на рис. 1 метка создана в ревизии 29: директория/trunkиз ревизии 27 скопирована под именем/tags/R1. Теперь, если не изменять данные в директории/tags/R1, то она навсегда останется точной копией директории/trunk@27, то есть будетметкой.

Концепция меток, используемая в Subversion, отличается от концепции меток в других системах управления версиями. Обычно метка является символическим именем, которое адресуетнабор файлов и их состояние. В Subversion меткакопируетнабор файлов и их состояние. Метки-копии в Subversion имеют свои достоинства и недостатки.

Достоинства:

  • метка создаётся практически мгновенно при любом размере помечаемых данных (благодаря дешёвымоперациям копирования);

  • метка видна в структуре директорий, можно сделать удобную древовидную организацию меток.

Недостатки:

  • трудно узнать, в какие метки вошёл файл (то же для директории);

  • если права доступа установлены индивидуально[31]для директорий, то метка эти права не наследует;

  • содержимое метки может быть изменено;

  • если из метки создать рабочую копию и зафиксировать из этой рабочей копии какие-либо изменения, то это изменит саму метку, а не те данные, которые были помечены. Правильным способом работы «от метки» является создание рабочей копии не из метки, а из того, что является источникомэтой метки.

[Править] Свойства (properties)

Одной из важных возможностей Subversion является поддержка свойств, то есть текстовых пар имя=значение, которые могут быть установлены для объектов в хранилище. Свойства используются в двух различных контекстах: для объектов файловой системы и для ревизий.

[Править] Свойства объектов файловой системы

Каждому файлу или директории в хранилище может быть присвоен набор свойств. Изменения свойств сохраняются в истории так же, как и изменения в файловой системе. Пользователи могут устанавливать свойства с любыми именами; существует также предопределённый набор служебных свойств, которые используются клиентской программой Subversion (имена служебных свойств имеют префикс «svn:»).

[Править] Свойства файлов

svn:executable

Делает файл исполняемым (для рабочих копий под операционными системами семейства UNIX).

svn:mime-type

Хранит MIME-тип файла. Влияет на способ работы команд, показывающих разницу файлов, а также объединяющих изменения (merging).

svn:keywords

Список ключевых слов(англ.keywords), которые будут заменены в файле соответствующими значениями. Чтобы замена произошла, ключевое слово должно присутствовать в файле в виде$keyword$. Используется для того, чтобы автоматически обновлять в файле значения, меняющиеся от версии к версии (например, номер ревизии).

svn:eol-style

Определяет правило преобразования символов конца строки(англ.end-of-line, EOL) в текстовом файле. Используется в случаях, когда файл должен иметь конкретный тип символов EOL. Обычно используется «native» — при этом тип символов конца строки соответствует принятому в той операционной системе, в которой происходит создание рабочей копии.

svn:needs-lock

Означает, что при извлечении из хранилища файл будет доступен только для чтения. Это свойство предназначено для использования совместно с механизмом блокировки. Запрет записи в файл является напоминанием того, что надо получить блокировку на этот файл, прежде чем его редактировать: при получении блокировки клиентская программа Subversion автоматически делает файл доступным для записи (снятие блокировки снова делает файл защищённым от модификаций). Блокировки могут быть использованы и без установки этого свойства. Однако делать это не рекомендуется, так как существует риск того, что другой пользователь может начать редактировать заблокированный файл, и это обнаружится только при фиксации изменений.

svn:special

Свойство не предназначено для установки или модификации пользователями. В настоящее время используется для хранения символьных ссылокв репозитории. Когда символьная ссылка добавляется в репозиторий, в репозитории создаётся файл с установленным свойствомsvn:special. Когда этот файл извлекается вUNIX-подобной системе, клиентская программа Subversion преобразует его обратно в ссылку.

svn:mergeinfo

Хранит информацию о том, из каких путей было произведено слияниев этот файл. Свойство введено в версии 1.5, оно используется дляотслеживания слияний(англ.merge tracking). Представляет собой набор строк видаимя_файла:диапазон_ревизий. Здесьимя_файла— полное (с путём от корня файловой системы репозитория) имя файла или директории, откуда было произведено слияние указанного диапазона ревизий. Строки модифицируются автоматически при операциях слияния; при последующих слияниях Subversion учитывает ранее вписанные строки, избегая тем самым повторных слияний одних и тех же изменений. Не рекомендуется изменять свойствоsvn:mergeinfoвручную — это может нарушить механизм отслеживания слияний.