Установки проекта

Рисунок 5.30. Страница свойств Проводника, вкладка Subversion

Страница свойств Проводника, вкладка Subversion


Иногда вам необходима более детальная информация о файле/папке, нежели пометка на значке. Вы можете получить всю информацию, предоставляемую Subversion, в диалоге свойств Проводника. Просто выберите из контекстного меню для нужного файла или папки Меню WindowsСвойства (обратите внимание: это обычный пункт 'Свойства' в контекстном меню Проводника, а не тот, который в подменю TortoiseSVN!). В диалоге свойств TortoiseSVN добавляет новую вкладку свойств для файлов/папок, находящихся под управлением Subversion, где вы можете посмотреть всю существенную информацию о выбранном файле/папке.

Свойства Subversion

Рисунок 5.31. Страница свойств Subversion

Страница свойств Subversion


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

Вы можете добавить ваши собственные свойства, а также некоторые свойства, имеющие специальное значение в Subversion. Такие свойства начинаются с svn:. Одним из таких свойств является svn:externals; посмотреть, как обращаться с внешними включениями, можно в «Связанные проекты».

Ключевые слова, начинающиеся с svn:

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

$Date$

Дата последней известной фиксации. Основывается на информации, полученной при обновлении рабочей копии. Хранилище не проверяется на наличие более поздних изменений.

$Revision$

Ревизия последней известной фиксации.

$Author$

Автор, выполнивший последнюю известную фиксацию.

$HeadURL$

Полный URL этого файла в хранилище.

$Id$

Сжатое сочетание предыдущих четырёх ключевых слов.

Чтобы узнать, как использовать эти ключевые слова, взгляните на svn:keywords section (раздел о svn:keywords) в Книге о Subversion, в котором приведено полное описание этих ключевых слов, и также информация о том, как их задействовать и использовать.

Чтобы больше узнать о свойствах в Subversion, прочтите Special Properties (Специальные свойства).

Добавление и редактирование свойств

Рисунок 5.32. Добавление свойств

Добавление свойств


Для добавления нового свойства, сначала щёлкните на Добавить.... Выберите необходимое имя свойства из выпадающего списка, или вбейте имя по собстенному усмотрению, а затем введите значение в нижерасположенное поле. Свойства, которые могут иметь множественные значения, такие как список игнорирования, можно ввести в нескольких строках. Нажмите ОК для добавления этого свойства в список.

Если вы желаете применить свойство к нескольким элементам за одну операцию, выберите файлы/папки в Проводнике, затем вызовите Контекстное менюСвойства.

Если вы желаете применить свойство к каждому файлу и папке, расположенному ниже текущей папки в иерархии, выберите флажок Применить свойство рекурсивно.

Некоторые свойства, например svn:needs-lock, могут быть применены только к файлам, и такие свойства не появляются в выпадающем списке для папок. Вы всё-таки можете применить такие свойства рекурсивно ко всем файлам в иерархии, но вы должны ввести имя свойства самостоятельно.

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

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

Свойство svn:externals может быть использовано для привлечения других проектов из того же хранилища или же совсем другого хранилища. Чтобы больше узнать об этом, прочтите «Связанные проекты».

Экспорт и импорт свойств

Часто вам приходиться применять один и тот же набор свойств множество раз, например, свойство bugtraq:logregex. Для упрощения процесса копирования свойств из одного проекта в другой, можно воспользоваться возможностью экспорта/импорта.

Для файла или папки, у которых нужные свойства уже установлены, вызовите TortoiseSVNСвойства, выберите свойства, которые вы желаете экспортировать, и щёлкните на Экспорт... У вас будет запрошено имя файла, в который будут сохранены имена и значения свойств.

Для папок, к которым вы желаете применить эти свойства, вызовите TortoiseSVNСвойства и щёлкните на Импорт.... У вас будет запрошено имя файла, из которого будет производиться импорт, поэтому перейдите к месту, где вы до этого сохранили файл экспорта, и выберите его. Свойства будут добавлены к папкам нерекурсивно.

Если вы желаете добавить свойства к дереву рекурсивно, выполните вышеуказанные шаги, после чего в диалоге свойств выберите каждое свойство по очереди, щёлкните на Исправить..., отметьте флажок Применить свойство рекурсивно и щёлкните на ОК.

Формат файла импорта является двоичным и внутренним для TortoiseSVN. Его единственное предназначение - перенос свойств при помощи импорта и экспорта, поэтому не нужно редактировать эти файлы.

Двоичные свойства

TortoiseSVN может работать с двоичными свойствами при помощи файлов. Для считывания двоичного значения свойства, выполните Сохранить... это значение в файл. Для установки двоичного свойства, используйте шестнадцатиричный редактор или другой подходящий инструмент для создания файла с требуемым содержимым, а потом вы можете Загрузить... значение свойства из этого файла.

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

Автоматическая установка свойств

Вы можете настроить Subversion и TortoiseSVN так, чтобы при добавлении файлов и папок в хранилище свойства для них устанавливались бы автоматически. Есть два способа это сделать:

Вы можете отредактировать файл настроек Subversion для включения этой функции в вашем клиенте. Во вкладке Общее в диалоге настроек TortoiseSVN есть кнопка 'Правка', открывающая этот файл. Файл настроек является простым текстовым файлом, управляющим работой некоторых функций Subversion. Вам надо изменить две вещи: сначала в разделе miscellany разкомментируйте строчку enable-auto-props = yes. Затем вам необходимо будет отредактировать раздел ниже для указания того, какие свойства к каким типам файлов надо добавлять. Этот метод является стандартной возможностью Subversion и работает в любом клиенте Subversion. Однако, он должен быть определён на каждом клиенте индивидуально - нет способа распространять эти настройки из хранилища.

Другой метод - установить свойство tsvn:autoprops на папках, как описано в следующем разделе. Этот способ работает только с клиентами TortoiseSVN, зато с его помощью автосвойства можно распространить во все рабочие копии при обновлении.

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

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

Фиксируйте свойства

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

Конфликты в свойствах

Если при фиксации изменений возникает конфликт из-за того, что другой пользователь изменил то же свойство, Subversion создаёт файл с расширением .prej. Удалите этот файл после улаживания конфликта.

Свойства проекта в TortoiseSVN

TortoiseSVN имеет несколько собственных специальных свойств, и они начинаются с tsvn:.

  • tsvn:logminsize устанавливает минимальную длину сообщения журнала при фиксации. Если вы введёте сообщение короче, чем здесь указано, фиксация будет невозможна. Эта возможность очень полезна для напоминания вам о необходимости указания надлежащего сообщения с описанием для каждой фиксации. Если это свойство не установлено, или его значение равно нулю, допустимы пустые сообщения журнала.

    tsvn:lockmsgminsize устанавливает минимальную длину сообщения блокирования. Если вы введёте сообщение короче, чем здесь указано, блокирование будет невозможно. Эта возможность очень полезна для напоминания вам о необходимости указания надлежащего сообщения с описанием для каждой получаемой вами блокировки. Если это свойство не установлено, или его значение равно нулю, допустимы пустые сообщения блокирования.

  • tsvn:logwidthmarker используется с проектами, требующими, чтобы строки в сообщении журнала не превышали некоторой максимальной длины (обычно 80 символов) до перевода строки. Установка этого свойства в ненулевое значение приводит к двум вещам в диалоге ввода сообщения журнала: помещает маркер для обозначения максимальной длины и запрещает перенос слов при отображении, так чтобы вы могли увидеть, не слишком ли длинный текст вы ввели. Обратите внимание: это свойство правильно работает, только если вы используете моноширинный шрифт (с фиксированной длиной символов) для сообщений журнала.

  • tsvn:logtemplate используется с проектами, в которых установлены правила форматирования сообщений журнала. Свойство содержит многострочный текст, который будет вставлен в поле ввода сообщения при начале фиксации. Затем вы можете изменить его для внесения нужной информации. Обратите внимание: если вы также используете tsvn:logminsize, убедитесь, что установили в нём длину, превышающую шаблон, или вы утратите этот механизм защиты.

  • В Subversion есть возможность задавать «автосвойства» (autoprops), которые будут применяться к свежедобавленным или импортированным файлам, исходя из их расширений. Для корректной работы этой возможности необходима установка соответствующих автосвойств у каждого клиента в его файле настроек Subversion. Автосвойства tsvn:autoprops можно установить на папках, и тогда они будут объединяться с локальными автосвойствами пользователя при импорте или добавлении файлов. Формат такой же, как и для автосвойств Subversion, например, *.sh = svn:eol-style=native;svn:executable устанавливает два свойства на файлах с расширением .sh

    Если возникает конфликт между локальными автосвойствами и tsvn:autoprops, преимущество имеют настройки проекта, поскольку они предназначены специально для этого проекта.

  • В диалоге фиксации есть возможность вставки в буфер обмена списка изменённых файлов вместе со статусом каждого файла (добавленный, измененный и т.п.). tsvn:logfilelistenglish определяет, будет ли состояние файлов указано на английском языке или локализовано. Если свойство не установлено, по умолчанию используется true.

  • TortoiseSVN может использовать модули проверки орфографии, которые применяются также в OpenOffice и Mozilla. Если эти приложения у вас уже установлены, это свойство определяет, какой из модулей проверки использовать, т.е. на каком языке будут написаны сообщения журнала в вашем проекте. Свойство tsvn:projectlanguage задаёт языковой модуль, который будет использоваться для проверки орфографии при вводе сообщений журнала. Вы можете найти значения для вашего языка на этой странице: MSDN: Language Identifiers.

    Вы можете ввести это значение в десятичной или шестнадцатеричной системе, для шестнадцатеричной используйте префикс 0x. Например, американский английский может быть введён как 0x0409 или как 1033 [3].

  • Свойство tsvn:logsummary применяется для извлечения части сообщения журнала, которая будет показана в диалоге журнала как краткая сводка этого полного сообщения.

    Значение свойства tsvn:logsummary должно содержать однострочное регулярное выражение, состоящее из одной группы. То, что соответствует этой группе, используется в качестве сводки.

    Например: \[SUMMARY\]:\s+(.*) возьмёт всё после «[SUMMARY]» из сообщения журнала и это будет использовано как сводка.

  • Когда вы желаете добавить новое свойство, вы можете либо выбрать одно из выпадающего списка, либо вы можете ввести любое другое понравившееся имя для свойства. Если ваш проект использует несколько собственных свойств, и вы хотите, чтобы эти свойства появились в выпадающем списке (для избежания опечаток при вводе имени свойства), вы можете создать список ваших собственных свойств при помощи tsvn:userfileproperties и tsvn:userdirproperties. Примените эти свойства к папке. Когда вы будете редактировать свойства любого дочернего элемента, ваши собственные свойства появятся в списке среди предопределённых имён свойств.

Некоторые tsvn:-свойства требуют значений true/false. TortoiseSVN также понимает yes как синоним true и no как синоним false.

TortoiseSVN может интегрироваться с некоторыми средствами отслеживания ошибок. При этом используются свойства проекта, начинающиеся с bugtraq:. Прочтите «Интеграция с системами отслеживания ошибок/проблем» для дополнительной информации.

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

Устанавливайте свойства проекта на папках

Эти специальные свойства проекта должны быть установлены на папках, для того чтобы эта система работала. При фиксации файла или папки свойства считываются из этой папки. Если свойства там не найдены, TortoiseSVN будет искать их выше по дереву папок, пока не достигнет неверсированной папки или корня дерева (например, C:\). Если вы можете быть уверены, что каждый пользователь извлекает только из одной папки (например, trunk/), а не из какой-то подпапки, тогда достаточно установить свойства для trunk/. Если вы в этом не уверены, тогда вы должны устанавливать свойства рекурсивно для каждой подпапки. Установка свойств ниже по иерархии проекта перекрывает свойства более высоких уровней (ближе к trunk/).

Только для свойств проекта вы можете использовать флажок Рекурсивно для установки свойства для всех подпапок в иерархии, без установки его также для всех файлов.

При добавлении новых подпапок посредством TortoiseSVN, все свойства проекта, заданные в родительской папке, будут автоматически добавлены и к новой дочерней папке.

Предостережение

Хотя свойства проекта, реализованные в TortoiseSVN, исключительно полезны, они работают только c TortoiseSVN, и некоторые из них будут работать только в свежих версиях TortoiseSVN. Если люди, работающие над вашим проектом, пользуются также и другими клиентами Subversion, или, быть может, у них установлены старые версии TortoiseSVN, то, возможно, лучше использовать ловушки на стороне хранилища для принудительного применения политик проекта. Свойства проекта могут только помочь выполнить политику, но они не могут принудительно применить её.



[3] Для русского значения будут 0x0419 и 1049, соответственно - прим. переводчика