Вы можете вызвать диалог для просмотра и установки свойств Subversion не только из диалога свойств Проводника Windows, но и также из → , и из списков состояния в различных диалогах TortoiseSVN, при помощи → .
Вы можете добавить ваши собственные свойства, а также некоторые свойства, имеющие специальное значение в Subversion. Такие свойства начинаются с svn:
. Одним из таких свойств является svn:externals
; посмотреть, как обращаться с внешними включениями, можно в «Внешние включения».
Subversion поддерживает подстановку ключевых слов в стиле CVS, для внесения имени файла и информации о ревизии внутрь самого этого файла. Ключевые слова, поддерживаемые в данный момент:
Дата последней известной фиксации. Основывается на информации, полученной при обновлении рабочей копии. Хранилище не проверяется на наличие более поздних изменений.
Ревизия последней известной фиксации.
Автор, выполнивший последнюю известную фиксацию.
Полный URL этого файла в хранилище.
Сжатое сочетание предыдущих четырёх ключевых слов.
Чтобы узнать, как использовать эти ключевые слова, взгляните на svn:keywords section (раздел о svn:keywords) в Книге о Subversion, в котором приведено полное описание этих ключевых слов, и также информация о том, как их задействовать и как использовать.
Чтобы больше узнать о свойствах в Subversion, прочтите Special Properties (Специальные свойства).
Для добавления нового свойства нажмите Создать.... Выберите требуемое имя свойства из меню, затем введите нужную информацию в диалоге конкретного свойства. Диалоги свойств более подробно описаны в «Свойства».
Чтобы добавить свойство, которое не имеет собственного диалога, выберите Создать.... Затем либо выберите существующее свойство из выпадающего списка, либо введите пользовательское имя свойства.
из менюЕсли хотите применить свойство ко многим элементам за один раз, то выберите файлы/папки в проводнике, потом выберите меню
→ .Если вы желаете применить свойство к каждому файлу и папке, расположенному ниже текущей папки в иерархии, выберите флажок Применить свойство рекурсивно.
Если вы желаете отредактировать существующее свойство, выберите это свойство из списка существующих свойств, после чего нажмите
.Если вы желаете удалить существующее свойство, выберите это свойство из списка существующих свойств, после чего нажмите на
.Свойство svn:externals
может быть использовано для включения других проектов из того же хранилища или же совсем другого хранилища. Чтобы больше узнать об этом, прочтите «Внешние включения».
Так как свойства версируются, вы не можете редактировать свойства предыдущих ревизий. Если вы смотрите свойства из диалога журнала или из не-HEAD ревизии в обозревателе хранилища, то вы увидите список свойств и значений без кнопок редактирования.
Часто вам приходиться применять один и тот же набор свойств множество раз, например, свойство bugtraq:logregex
. Для упрощения процесса копирования свойств из одного проекта в другой, можно воспользоваться возможностью экспорта/импорта.
Для файла или папки, у которых нужные свойства уже установлены, вызовите
→ , выберите свойства, которые вы желаете экспортировать, и щёлкните на У вас будет запрошено имя файла, в который будут сохранены имена и значения свойств.Для папок, к которым вы желаете применить эти свойства, вызовите
→ и щёлкните на . У вас будет запрошено имя файла, из которого будет производиться импорт, поэтому перейдите к месту, где вы до этого сохранили файл экспорта, и выберите его. Свойства будут добавлены к папкам нерекурсивно.Если вы желаете добавить свойства к дереву рекурсивно, выполните вышеуказанные шаги, после чего в диалоге свойств выберите каждое свойство по очереди, щёлкните на Применить свойство рекурсивно и щёлкните на .
, отметьте флажокФормат файла импорта является двоичным и внутренним для TortoiseSVN. Его единственное предназначение - перенос свойств при помощи импорта и экспорта, поэтому не нужно редактировать эти файлы.
TortoiseSVN может работать с двоичными свойствами при помощи файлов. Для считывания двоичного значения свойства, выполните
это значение в файл. Для установки двоичного свойства, используйте шестнадцатеричный редактор или другой подходящий инструмент для создания файла с требуемым содержимым, а потом вы можете значение свойства из этого файла.Хотя двоичные свойства не так уж часто используются, они могут оказаться полезными для некоторых применений. Например, если вы храните огромные графические файлы, или если приложение, используемое для загрузки файла, слишком велико, вы можете сохранить миниатюру в свойстве для того, чтобы можно было быстро выполнить предварительный просмотр.
Вы можете настроить Subversion и TortoiseSVN так, чтобы при добавлении файлов и папок в хранилище свойства для них устанавливались бы автоматически. Есть два способа это сделать:
Вы можете отредактировать файл настроек Subversion для включения этой функции в вашем клиенте. Во вкладке Общее в диалоге настроек TortoiseSVN есть кнопка 'Правка', открывающая этот файл. Файл настроек является простым текстовым файлом, управляющим работой некоторых функций Subversion. Вам надо изменить две вещи: сначала в разделе miscellany
разкомментируйте строчку enable-auto-props = yes
. Затем вам необходимо будет отредактировать раздел ниже для указания того, какие свойства к каким типам файлов надо добавлять. Этот метод является стандартной возможностью Subversion и работает в любом клиенте Subversion. Однако, он должен быть определён на каждом клиенте индивидуально - нет способа распространять эти настройки из хранилища.
Другой метод - установить свойство tsvn:autoprops
на папках, как описано в следующем разделе. Этот способ работает только с клиентами TortoiseSVN, зато с его помощью автосвойства можно распространить во все рабочие копии при обновлении.
Начиная с Subversion 1.8, вы можете также установить свойство svn:auto-props
на корневой папке. Значение свойства автоматически будет унаследовано всеми дочерними элементами.
Какой бы метод вы ни выбрали, имейте ввиду, что auto-props применяется к файлам только в момент добавления в рабочую копию. Auto-props никогда не изменит свойства уже версированных файлов.
Если вы желаете быть абсолютно уверенными, что к новым файлам применяются правильные свойства, вы должны настроить в хранилище ловушку перед-обновлением для отклонения фиксаций, в которых не установлены обязательные свойства.
В Subversion свойства являются версированными. После изменения или добавления свойства, вы должны зафиксировать ваши изменения.
Если при фиксации изменений возникает конфликт из-за того, что другой пользователь изменил то же свойство, Subversion создаёт файл с расширением .prej
. Удалите этот файл после улаживания конфликта.
TortoiseSVN имеет несколько собственных специальных свойств, и они начинаются с tsvn:
.
tsvn:logminsize
устанавливает минимальную длину сообщения журнала при фиксации. Если вы введёте сообщение короче, чем здесь указано, фиксация будет невозможна. Эта возможность очень полезна для напоминания вам о необходимости указания надлежащего сообщения с описанием для каждой фиксации. Если это свойство не установлено, или его значение равно нулю, допустимы пустые сообщения журнала.
tsvn:lockmsgminsize
устанавливает минимальную длину сообщения блокирования. Если вы введёте сообщение короче, чем здесь указано, блокирование будет невозможно. Эта возможность очень полезна для напоминания вам о необходимости указания надлежащего сообщения с описанием для каждой получаемой вами блокировки. Если это свойство не установлено, или его значение равно нулю, допустимы пустые сообщения блокирования.
tsvn:logwidthmarker
используется с проектами, требующими, чтобы строки в сообщении журнала не превышали некоторой максимальной длины (обычно 80 символов) до перевода строки. Установка этого свойства в ненулевое значение приводит к двум вещам в диалоге ввода сообщения журнала: помещает маркер для обозначения максимальной длины и запрещает перенос слов при отображении, так чтобы вы могли увидеть, не слишком ли длинный текст вы ввели. Обратите внимание: это свойство правильно работает, только если вы используете моноширинный шрифт (с фиксированной длиной символов) для сообщений журнала.
tsvn:logtemplate
используется с проектами, в которых установлены правила форматирования сообщений журнала. Свойство содержит многострочный текст, который будет вставлен в поле ввода сообщения при начале фиксации. Затем вы можете изменить его для внесения нужной информации. Обратите внимание: если вы также используете tsvn:logminsize
, убедитесь, что установили в нём длину, превышающую шаблон, или вы утратите этот механизм защиты.
Также есть шаблоны специфичные для действий, которые вы можете использовать вместо tsvn:logtemplate
. Шаблоны специфичные для действий используются когда они заданы, но если не заданы, то будет использован tsvn:logtemplate
.
Возможные значения:
tsvn:logtemplatecommit
используется для всех фиксаций из рабочей копии.
tsvn:logtemplatebranch
используется когда вы создаете ответвление/метку или когда копируете файлы или папки прямо в обозревателе хранилища.
tsvn:logtemplateimport
используется для импорта.
tsvn:logtemplatedelete
используется при удалении элементов прямо в обозревателе хранилища.
tsvn:logtemplatemove
используется при переименовании или перемещении элементов прямо в обозревателе хранилища.
tsvn:logtemplatemkdir
используется при создании директорий в обозревателе хранилища.
tsvn:logtemplatepropset
используется при изменении свойств в обозревателе хранилища.
tsvn:logtemplatelock
используется при получении блокировки.
В Subversion есть возможность задавать «автосвойства» (autoprops), которые будут применяться к свежедобавленным или импортированным файлам, исходя из их расширений. Для корректной работы этой возможности необходима установка соответствующих автосвойств у каждого клиента в его файле настроек Subversion. Автосвойства tsvn:autoprops
можно установить на папках, и тогда они будут объединяться с локальными автосвойствами пользователя при импорте или добавлении файлов. Формат такой же, как и для автосвойств Subversion, например, *.sh = svn:eol-style=native;svn:executable
устанавливает два свойства на файлах с расширением .sh
Если возникает конфликт между локальными автосвойствами и tsvn:autoprops
, преимущество имеют настройки проекта, поскольку они предназначены специально для этого проекта.
Начиная с Subversion 1.8, вы должны использовать свойство svn:auto-props
вместо tsvn:autoprops
, т.к. оно имеет ту же функциональность, но работает со всеми svn-клиентами, а не только в TortoiseSVN.
В диалоге фиксации есть возможность вставки в буфер обмена списка изменённых файлов вместе со статусом каждого файла (добавленный, измененный и т.п.). tsvn:logfilelistenglish
определяет, будет ли состояние файлов указано на английском языке или локализовано. Если свойство не установлено, по умолчанию используется true
.
TortoiseSVN can use a spell checker. On Windows 10, the spell checker of the OS is used. On earlier Windows versions, it can use spell checker modules which are also used by OpenOffice and Mozilla. If you have those installed this property will determine which spell checker to use, i.e. in which language the log messages for your project should be written. tsvn:projectlanguage
sets the language module the spell checking engine should use when you enter a log message. You can find the values for your language on this page: MSDN: Language Identifiers.
Вы можете ввести это значение в десятичной или шестнадцатеричной системе, для шестнадцатеричной используйте префикс 0x
. Например, американский английский может быть введён как 0x0409
или как 1033
[2].
Свойство tsvn:logsummary
применяется для извлечения части сообщения журнала, которая будет показана в диалоге журнала как краткая сводка этого полного сообщения.
Значение свойства tsvn:logsummary
должно содержать однострочное регулярное выражение, состоящее из одной группы. То, что соответствует этой группе, используется в качестве сводки.
Например: \[SUMMARY\]:\s+(.*)
возьмёт всё после «[SUMMARY]» из сообщения журнала и это будет использовано как сводка.
Свойство tsvn:logrevregex
задаёт регулярное выражение, соответствующее ссылкам на ревизии в сообщении журнала. Это используется в диалоге журнала, позволяя при щелчке по такой ссылке перейти к указанной ревизии либо в том же окне (если ревизия уже отображается в диалоге журнала, или находится в кэше сообщений), либо открыть новый диалог журнала, показывающий эту ревизию.
Это регулярное выражение должно соответствовать ссылке целиком, а не только номеру ревизии. Номер ревизии извлекается из обнаруженной строки ссылки автоматически.
Если это свойство не задано, для создания ссылок на ревизии используется регулярное выражение по умолчанию.
Существуют несколько свойств для конфигурирования клиентских скриптов обработчиков. Каждое свойство для определенного типа скрипта обработчика.
Доступные параметры/обработчики
Параметры такие же, как если бы вы сконфигурировали скрипты обработчиков в диалоге настроек. Более подоробно см. «Скрипты ловушек, выполняемые на стороне клиента».
Так как не каждый пользователь имеет свою рабочую копию извлечённую и размещённую в одном и том же месте и с тем же самым именем, то вы можете сконфигурировать выполняемый скрипт/инструмент, который размещён в вашей рабочей копии указав адрес URL в хранилище, используя %REPOROOT%
как часть URL для указания корня хранилища. Например, если ваш скрипт-обработчик в вашей рабочей копии в contrib/hook-scripts/client-side/checkyear.js
, то вы должны указать путь к скрипту как %REPOROOT%/trunk/contrib/hook-scripts/client-side/checkyear.js
. Таким образом, даже если вы переместите ваше хранилище на другой сервер, вам не надо исправлять свойства скрипта-обработчика.
Вместо переменной %REPOROOT%
вы также можете указать %REPOROOT+%
. Символ +
используется для вставки любого количества путей к папке, необходимое для поиска скриптом. Это полезно, если вы хотите создать скрипт, который бы находил рабочую копию даже при при создании отдельной ветки и изменения её url. Пример использования: %REPOROOT+%/contrib/hook-scripts/client-side/checkyear.js
.
Следующий скриншот демонстрирует как в TortoiseSVN сконфигурирован скрипт для проверки года авторского права в заголовках файлов исходников.
Когда вы желаете добавить новое свойство, вы можете либо выбрать одно из выпадающего списка, либо вы можете ввести любое другое понравившееся имя для свойства. Если ваш проект использует несколько собственных свойств, и вы хотите, чтобы эти свойства появились в выпадающем списке (для избежания опечаток при вводе имени свойства), вы можете создать список ваших собственных свойств при помощи tsvn:userfileproperties
и tsvn:userdirproperties
. Примените эти свойства к папке. Когда вы будете редактировать свойства любого дочернего элемента, ваши собственные свойства появятся в списке среди предопределённых имён свойств.
Вы также можете указать, используется ли специальный диалог для добавления/редактирования свойства. TortoiseSVN предлагает четыре различных диалога, в зависимости от типа вашего свойства.
Если ваше свойство может иметь только два состояния, например, истина и ложь, то вы можете сконфигурировать свойство типа булев
.
Определите ваше свойство вот так:
propertyname=bool;labeltext(YESVALUE;NOVALUE;Checkboxtext)
labeltext
— это текст, отображаемый в диалоге над флажком, в котором вы можете пояснить назначение и использование свойства. Остальные параметры говорят сами за себя.
Если ваше свойство представляет одно из возможных значений, например, да, нет, может быть
, то вы можете сконфигурировать ваше свойство как свойство состояние
вот так:
propertyname=state;labeltext(DEFVAL;VAL1;TEXT1;VAL2;TEXT2;VAL3;TEXT3;...)
Параметры такие же как для свойства булев
, где DEFVAL
— значение по умолчанию, используемое если свойство еще не установлено или имеет значение, которое не сконфигурировано.
Для не более трёх разных значений в диалоге отображается до трёх переключателей. Если сконфигурировано больше значений, то используется выпадающий список, из которого пользователь может выбрать нужное состояние.
Для свойств, которые состоят из одной строки текста используйте свойство типа однострочный
:
propertyname=singleline;labeltext(regex)
regex
определяет регулярное выражение, которое используется для проверки соответствия введенного пользователем текста. Если текст не соответствует регулярному выражению, то пользователю показывается ошибка и свойство не устанавливается.
Для свойств, которые состоят из множества строк текста, используйте свойство типа многострочный
:
propertyname=multiline;labeltext(regex)
regex
определяет регулярное выражение, которое используется для проверки соответствия введенного пользователем текста. Не забывайте добавлять символ новой строки (\n) в регулярное выражение!
Приведенные выше скриншоты были сделаны со следующими свойствами tsvn:userdirproperties
:
my:boolprop=bool;This is a bool type property. Either check or uncheck it.(true;false;my bool prop) my:stateprop1=state;This is a state property. Select one of the two states.(true;true;true value;false;false value) my:stateprop2=state;This is a state property. Select one of the three states.(maybe;true;answer is correct;false;answer is wrong;maybe;not answered) my:stateprop3=state;Specify the day to set this property.(1;1;Monday;2;Tuesday;3;Wednesday;4;Thursday;5;Friday;6;Saturday;7;Sunday) my:singlelineprop=singleline;enter a small comment(.*) my:multilineprop=multiline;copy and paste a full chapter here(.*)
TortoiseSVN может интегрироваться с некоторыми средствами отслеживания ошибок. При этом используются свойства проекта, начинающиеся с bugtraq:
. Прочтите «Интеграция с системами отслеживания ошибок/проблем» для дополнительной информации.
TortoiseSVN также может интегрироваться с некоторыми работающими через веб-интерфейс средствами просмотра хранилища, используя для этого свойства, начинающиеся с webviewer:
. Прочтите «Интеграция со средствами просмотра хранилища, работающими через веб-интерфейс» для дополнительной информации.
Для того чтобы система работата, эти специальные свойства проекта должны быть установлены на папках. Когда вы используете команду TortoiseSVN, которая использует эти свойства, свойства читаются из папки на которой вы кликнули. Если там свойства не найдены, то TortoiseSVN будет искать вверх по дереву папок пока не дойдет до неверсированной папки или корня дерева (например, C:\
). Если вы можете быть уверены, что каждый пользователь извлекает только из, допустим, trunk/
, а не какой-то подпапки, тогда достаточно установить свойства для trunk/
. Если вы не можете быть в этом уверены, то вы должны установить свойства рекурсивно для каждой подпапки. Если вы устанавливаете одно и то же свойство, но используете разные значения на разных уровнях иерархии проекта, то в зависимости от того где кликните в структуре папок вы получите разные результаты.
Только для свойств проекта, т.е. для tsvn:
, bugtraq:
и webviewer:
, вы можете использовать флажок Рекурсивно для установки свойства для всех подпапок в иерархии, без установки его также для всех файлов.
Если вы добавляете новые подпапки в рабочую копию используя TortoiseSVN, то любые свойства проекта, заданные в родительской папке, будут автоматически добавлены в новые дочерние папки.
Удаленная выборка свойств может занять много времени, поэтому некоторые из свойств описанных выше не будут работать в обозревателе хранилища так, как они работают в рабочей копии.
Если вы добавляете свойство используя обозреватель хранилища, то только стандартные svn:
свойства будут доступны на выбор в предопределённом списке. Любое другое имя свойства должно быть добавлено вручную.
Свойства не могут быть заданы или удалены рекурсивно с помощью обозревателя хранилища.
Свойства проекта НЕ будут автоматически скопированы, если дочерняя папка добавляется посредством обозревателя хранилища.
Свойство tsvn:autoprops
НЕ задает свойства файлам, добавляемых посредством обозревателя хранилища.
Хотя свойства проекта, реализованные в TortoiseSVN, исключительно полезны, они работают только c TortoiseSVN, и некоторые из них будут работать только в свежих версиях TortoiseSVN. Если люди, работающие над вашим проектом, пользуются также и другими клиентами Subversion, или, быть может, у них установлены старые версии TortoiseSVN, то, возможно, лучше использовать ловушки на стороне хранилища для принудительного применения политик проекта. Свойства проекта могут только помочь выполнить политику, но они не могут принудительно применить её.
Некоторые свойства должны использовать определенные значения или должны быть отформатированы особым образом, чтобы быть использованными автоматически. Чтобы упростить получение правильного форматирования некоторых свойств TortoiseSVN предоставляет диалоги редактирования, которые показывают возможные значения или разбивают свойство на отдельные компоненты.
Свойство svn:externals
может быть использовано для втягивания других проектов из того же хранилища или из совсем другого хранилища, как это описано в «Внешние включения».
Вам необходимо определить имя подпапки, в которую извлекается внешняя папка, и URL-адрес внешнего элемента. Вы можете извлекать внешний элемент с ревизии HEAD, так что при изменении внешнего элемента в хранилище ваша рабочая копия получит эти изменения при обновлении. Однако, если вы хотите, чтобы внешний элемент ссылался на определенную постоянную точку, то вы можете указать определенную ревизию. В этом случае вы возможно захотите указать ту же ревизию как опорную (peg) ревизию. Если внешний элемент переименован в какой-то момент в будущем, то Subversion не сможет обновить этот элемент в вашей рабочей копии. Указывая опорную (peg) ревизию вы сообщаете Subversion, что надо искать элемент по имени в опорной (peg) ревизии, а не в ревизии HEAD.
Кнопка
получает ревизию HEAD для каждого URL-адреса внешнего определения и показывает эту HEAD ревизию в самой правой колонке. После того, как ревизия HEAD известна, простой правый клик на внешнем определении даёт возможность установить опорную (peg) ревизию выбранного внешнего определения на явную ревизию HEAD. В случае если ревизия HEAD не известна, то команда по правому клику сначала получит ревизию HEAD.
Выберите ключевые слова, которые должны быть развернуты в вашем файле.
Выберите какой стиль окончания строки вы хотите использовать и TortoiseSVN будет использовать правильное значение свойства.
Эти 3 свойства управляют форматированием сообщений журнала. Первые 2 отключают в диалогах фиксации или блокировки до тех пор, пока сообщение меньше заданной длины. Позиция границы показывает маркер в заданной ширине колонки в качестве руководства для проектов, в которых есть пределы ширины для сообщений журнала. Установка значения в ноль удалит свойство.
Выберите язык для проверки орфографии в сообщениях журнала в диалоге фиксации. Флажок списки файлов срабатывает когда вы делаете правый клик в панели сообщения журнала и выбираете Вставить список имен фалов. По умолчанию статус Subversion отображается на локальном языке. Когда этот флажок установлен, то статус всегда будет на английском для проектов, которым требуются неанглийские сообщения журнала.
Это свойство просто определяет будет ли файл извлечен с атрибутом "только чтение" если на него нет блокировки в рабочей копии.
Это свойство определяет будет ли файл отмечен как исполняемый при извлечении на системах Unix/Linux. Оно не имеет эффекта при извлечении на Windows.
Всякий раз, когда ревизии объединяются в рабочей копии, TortoiseSVN создает сообщение журнала из всех объединённых ревизий. Они потом доступны по кнопке
в диалоге фиксации.Вы можете настроить это созданное сообщение следующими свойствами:
Это свойство определяет первую часть созданного сообщения журнала. Можно использовать следующие ключевые слова:
Список объединённых ревизий, разделенный запятыми, например, 3, 5, 6, 7
Также как {revisions}
, но каждая ревизия начинается с r
, например, r3, r5, r6, r7
Список объединённых ревизий, разделенный запятыми, при возможности объединённый в диапазоны, например, 3, 5-7
Исходный URL-адрес слияния, т.е. откуда объединяются ревизии.
Значение по умолчанию для этой строки Объединены ревизии {revrange} из {mergeurl}:
с символом новой строки в конце.
Это свойство определяет как должен выглядеть текст для каждой объединённой ревизии. Можно использовать следующие ключевые слова:
Сообщение журнала объединённой ревизии, как оно было введено.
Также как {msg}
, но все символы новой строки заменены на пробелы так, что всё сообщение целиком размещается в одну строку.
Автор объединённой ревизии.
Сама объединённая ревизия.
Идентификаторы (ID) ошибок объединённой ревизии, если таковые есть.
Это свойство устанавливает позицию строки заголовка заданного в tsvn:mergelogtemplatetitle
или tsvn:mergelogtemplatereversetitle
. Если свойство установлено в да
или истина
, то строка заголовка добавляется снизу вместо верха.
Это работает только, если объединённые ревизии уже в кэше журнала. Если вы отключили кэш журнала или не просматривали журнал перед слиянием, то созданное сообщение не будет содержать информацию об объединённых ревизиях.