- •Subversion — Википедия
- •[Править] Общие сведения [править] Возможности
- •[Править] Модель работы
- •[Править] Типы репозиториев
- •[Править] Доступ к репозиторию
- •[Править] Основные концепции [править] Файловая система
- •[Править] Имена файлов
- •[Править] Номера ревизий
- •[Править] Оперативная и стержневая ревизии
- •[Править] Операции над файловой системой
- •[Править] Фиксация изменений [править] Рабочая копия
- •[Править] Транзакции
- •[Править] Локальные и удалённые формы команд
- •[Править] Структура хранилища [править] Структура проекта в хранилище
- •[Править] Ветви
- •[Править] Метки
- •[Править] Свойства (properties)
- •[Править] Свойства объектов файловой системы
- •[Править] Свойства файлов
- •[Править] Свойства директорий
- •[Править] Свойства ревизий
- •[Править] Использование Subversion [править] Рабочий цикл
- •[Править] Ветвление
- •[Править] Создание ветвей
- •[Править] Работа с ветвями
- •[Править] Слияние [править] Копирование изменений между ветвями
- •[Править] Другие применения команды svn merge
- •[Править] Создание хранилища
- •[Править] Subversion и cvs [править] Сравнение
- •[Править] Миграция с cvs на Subversion [править] Преобразование репозитория
- •[Править] Отличия в использовании [править] Различия в работе с файлами
- •[Править] Адресация состояния хранилища
- •[Править] Внутренняя структура [править] Уровни
- •[Править] Конфигурация клиента
- •[Править] Проблемы при переименовании файлов
- •[Править] Слабая поддержка слияния ветвей
- •[Править] Невозможность удаления данных из хранилища
- •[Править] Дополнительное программное обеспечение
- •[Править] Краткое описание
- •[Править] Лицензирование:
- •История файла
- •Использование файла
[Править] Ветви
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вручную — это может нарушить механизм отслеживания слияний.