Subversion имеет множество контролируемых пользователем опциональных параметров поведения. Возможно пользователь хотел бы применять некоторые из этих параметров во всех операциях Subversion. Поэтому для того, что бы не заставлять пользователей помнить ключи командной строки используемые для указания этих параметров и не указывать их при всех выполняемых операциях, Subversion использует конфигурационные файлы, выделенные в область конфигурации Subversion.
Область конфигурации Subversion имеет двухуровневую иерархию имен параметров и их значений. Как правило, она сводится к отдельной директории, содержащей конфигурационные файлы (первый уровень) являющиеся простыми текстовыми файлами в стандартном INI формате (с «разделами», обеспечивающими второй уровень). Эти файлы содержат директивы используемые клиентом для определения поведения клиента предпочитаемого пользователем, и могут быть легко отредактированы используя ваш любимый редактор (например, Emacs или vi).
Во время первого запуска клиент для командной строки
svn создает отдельную для каждого пользователя
область конфигурации. На Unix-подобных системах эта директория
называется .subversion
и находиться в домашней
директории пользователя. На Win32 системах Subversion создает
папку с именем Subversion
в области
Application Data
директории с профилем
пользователя (которая, кстати говоря, обычно является скрытой
директорией). Однако на этой платформе точное местоположение
отличается от системы к системе и указывается в реестре
Windows. [48]
При обращении к пользовательской области конфигурации мы будем
использовать ее Unix-название.
В дополнение к пользовательской области конфигурации,
Subversion использует общесистемную область конфигурации. Это
дает возможность системным администраторам устанавливать
параметры по умолчанию для всех пользователей отдельно взятой
машины. Помните, что системная область конфигурации не
устанавливает безоговорочные правила — параметры, заданные
пользовательской конфигурацией переопределяют системные параметры,
а аргументы командной строки, передаваемые программе
svn, имеют последнее слово. На Unix-подобных
платформах ожидаемым местоположением системной области конфигурации
является директория /etc/subversion
; на
Windows машинах ищется директория Subversion
внутри общесистемной области Application Data
(также определяемой реестром). В отличие от пользовательской,
системную область конфигурации svn не
создает.
На сегодняшний момент пользовательская область конфигурации
содержит три файла — два файла конфигурации
(config
и servers
) и
README.txt
, который содержит описание INI формата.
После их создания, эти файлы содержат значения по умолчанию для всех,
поддерживаемых Subversion параметров, обычно закомментированных и
объединенных с текстовым описанием значений ключей, влияющих на
поведение Subversion. Для того, что бы изменить отдельный параметр все,
что нужно, просто загрузить соответствующий файл в текстовый редактор
и изменить значение нужного параметра. Если в какой-то момент вы
захотите восстановить параметры по умолчанию, необходимо просто
удалить (или переименовать) директорию с конфигурацией, после чего
выполнить какую-то безобидную команду svn,
например, svn --version. В результате будет
создана новая директория с конфигурацией и содержимым по
умолчанию.
Кроме того, пользовательская область конфигурации содержит
кеш идентификационной информации. Директория auth
объединяет набор поддиректорий, содержащих кешированну информацию,
используемую в различных, поддерживаемых Subversion методах
авторизации. Эта директория создается так, что бы только сам
пользователь имел право просматривать ее содержимое.
В дополнение к обычным INI-настройкам, Subversion-клиент, работающий на платформе Windows, может использовать для хранения настроек Windows-реестр. Имена параметров и их значения точно такие же, как и в INI-файлах. Иерархия «файлов» сохраняется, только немного меняется способ адресации — файлы и разделы просто заменяются уровнями в дереве ключей реестра.
За общесистемными настройками Subversion обращается к ключу
HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion
Например, параметр global-ignores
, находящийся в
разделе miscellany
файла
config
будет находиться в HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
. Пользовательские настройки хранятся в ключе
HKEY_CURRENT_USER\Software\Tigris.org\Subversion
.
Параметры конфигурации, указанные в реестре обрабатываются до эквивалентных параметров в файлах конфигурации, поэтому они заменяются значениями, найденными, в файлах конфигурации. Другими словами, на Windows-системе приоритеты расположены в следующем порядке:
Параметры командной строки
Пользовательские INI-файлы
Параметры в реестре
Системные INI-файлы
Общесистемные параметры в реестре
Кроме того, реестр Windows не поддерживает механизма
«комментирования». Тем не менее, Subversion
игнорирует параметры, у которых имена начинаются с
символа «решетка» (#
).
Это позволяет закомментировать параметр, не удаляя ключ из
реестра, что значительно упрощает процесс восстановления этого
параметра.
Клиент для командной строки svn
никогда ничего не записывает и не создает первоначальные
«умолчательные» параметры в реестре Windows.
Нужные вам ключи вы можете создать используя программу
REGEDIT. Либо, можно создать
.reg
-файл и двойным щелчком на этом файле
в Explorer добавить информацию в реестр.
Пример 7.1. Пример указания параметров в (.reg) файле реестра.
REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\groups] [HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global] "#http-proxy-host"="" "#http-proxy-port"="" "#http-proxy-username"="" "#http-proxy-password"="" "#http-proxy-exceptions"="" "#http-timeout"="0" "#http-compression"="yes" "#neon-debug-mask"="" "#ssl-authority-files"="" "#ssl-trust-default-ca"="" "#ssl-client-cert-file"="" "#ssl-client-cert-password"="" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auth] "#store-auth-creds"="no" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\helpers] "#editor-cmd"="notepad" "#diff-cmd"="" "#diff3-cmd"="" "#diff3-has-program-arg"="" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany] "#global-ignores"="*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store" "#log-encoding"="" "#use-commit-times"="" "#template-root"="" "#enable-auto-props"="" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\tunnels] [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auto-props]
В предыдущем примере показано содержимое
.reg
-файла, содержащего часто используемые
параметры и их значения по умолчанию. Обратите внимание, что
приведены как общесистемные (сетевые настройки, относящиеся к
прокси-серверу) и пользовательские параметры (программы-редакторы
и сохранение паролей, среди прочего). Так же обратите внимание,
что все параметры закомментированы. Необходимо будет просто удалить
символ «решетка» (#
) и установить
нужное значение.
В этом разделе рассматриваются поддерживаемые Subversion параметры времени выполнения.
В файле servers
находятся настройки,
относящиеся к работе Subversion через сеть. Он содержит
два специальных раздела — groups
и
global
. Раздел groups
представляет собой просто перекрестную таблицу. Ключи этого
раздела являются именами последующих разделов файла; значения
ключей представляют собой обобщения —
текстовые блоки, которые могут содержать подстановочные символы
— сравниваемые с именами машин, к которым Subversion
направляет запросы.
[groups] beanie-babies = *.red-bean.com collabnet = svn.collab.net [beanie-babies] … [collabnet] …
При работе через сеть, Subversion ищет совпадения между
именем сервера, с которым устанавливается связь и именем группы
в разделе groups
. Если найдено совпадение,
Subversion обращается к файлу servers
,
к разделу с именем, совпадающим с именем группы. Из этого раздела
берутся необходимые сетевые настройки.
Раздел global
содержит настройки,
используемые для всех серверов, не подпадающих ни под одно
обобщение раздела groups
. Здесь указываются
те-же, что и для остальных серверных разделов файла параметры
(конечно, за исключением специального раздела
groups
), используемые параметры приведены
ниже:
http-proxy-host
Указывает имя компьютера-посредника, через который Subversion должна отправлять HTTP-запросы. По умолчанию, этот параметр имеет пустое значение, которое говорит Subversion о том, что она должна направлять HTTP-запросы не через компьютер-посредник, а связываться с целевой машиной напрямую.
http-proxy-port
Указывает номер используемого порта на промежуточном компьютере. По умолчанию имеет пустое значение.
http-proxy-username
Указывает имя пользователя, передаваемого компьютеру-посреднику. По умолчанию имеет пустое значение.
http-proxy-password
Указывает пароль, передаваемый компьютеру-посреднику. По умолчанию имеет пустое значение.
http-timeout
Указывает, в секундах, промежуток времени ожидания
ответа сервера. Если при низкоскоростном сетевом соединении
у вас возникает проблема превышения времени ожидания,
следует увеличить это значение. Значение по умолчанию
0
означает для низлежащей HTTP библиотеки,
Neon, использовать свое собственное значение времени
ожидания.
http-compression
Указывает, должна или нет Subversion использовать
сжатие сетевых запросов, выполняющихся к DAV-серверам.
Значением по умолчанию является yes
(однако выполняться сжатие будет только если такая
возможность поддерживается сетевым слоем). Установите
этот параметр в no
, для отключения
сжатия, например при отладке сетевых транзакций.
neon-debug-mask
Целочисленная маска, которая используется низлежащей
HTTP-библиотекой, Neon, для определения типа выводимой
отладочной информации. По умолчанию установлено значение
0
, скрывающие весь отладочный вывод.
Подробнее о том как Subversion использует Neon читайте в
разделе Глава 8, Информация для разработчиков.
ssl-authority-files
Разделенный точкой с запятой перечень путей к файлам, содержащим сертификаты авторизации (или CAs), используемые Subversion-клиентом при обращении к хранилищу через HTTPS.
ssl-trust-default-ca
Установите значение этой переменной в
yes
, если хотите чтобы Subversion
автоматически доверяла набору поставляемых вместе
с OpenSSL сертификатов (CAs).
ssl-client-cert-file
Если хост (или хосты) требуют SSL сертификат клиента, у вас будет запрошен путь к вашему сертификату. Установите значение этой переменной и Subversion сможет автоматически находить ваш сертификат, без запроса. Нет стандартного места для хранения сертификата на диске; Subversion будет использовать тот, который располагается по указанному вами пути.
ssl-client-cert-password
Если ваш клиентский SSL сертификат защищен паролем,
при обращении к нему Subversion запросит у вас пароль.
Если это вам надоедает (и вас не пугает хранить пароль
в файле servers
), можно присвоить
значению этой переменной пароль сертификата. После этого
пароль больше запрашиваться не будет.
Остальные доступные параметры времени выполнения Subversion,
не относящиеся к сетевой работе, находятся в файле
config
. В данный момент существует всего
несколько параметров, но они тоже сгруппированы в разделы,
в расчете на их увеличение в будущем.
Раздел auth
содержит параметры, относящиеся
к аутентификации и авторизации в хранилище. Он содержит:
store-passwords
Устанавливает, используется или не используется
кеширование паролей, введенных пользователем в ответ на
запрос при аутентификации на сервере. Значением по умолчанию
является да
. Для запрета кеширования
паролей на диск установите этот параметр в
нет
. Для отдельного запуска
svn этот параметр можно переопределить,
используя параметр командной строки
--no-auth-cache
(для тех команд, которые его
поддерживают). За более подробной информацией обратитесь к
разделу «Кэширование клиентской идентификационной информации».
store-auth-creds
Этот параметр такой же как и
store-passwords
, за исключением того,
что он разрешает или запрещает дисковое кеширование
всей информации для аутентификации:
имен пользователей, паролей, серверных сертификатов и всей
другой кешируемой информации.
Раздел helpers
определяет, какие внешние
приложения, при выполнении своих задач, будет использовать
Subversion. Доступные параметры:
editor-cmd
Определяет программу, которую будет использовать
Subversion для ввода лог сообщений, в тех случаях, когда
svn commit используется без параметров
--message
(-m
) или
--file
(-F
). Эта же
программа используется с командой svn
propedit — вызывается временный файл,
содержащий текущее значение редактируемого пользователем
свойства и редактирование выполняется прямо в
программе-редакторе (см. «Свойства»). По умолчанию значение
этого свойства не установлено. Порядок определения
используемого редактора следующий:
Command-line option --editor-cmd
Environment variable SVN_EDITOR
Configuration option editor-cmd
Environment variable VISUAL
Environment variable EDITOR
Possibly, a default value built in to Subversion (not present in the official builds)
The value of any of these options or variables is
(unlike diff-cmd
) the beginning of a
command line to be executed by the shell. Subversion
appends a space and the pathname of the temporary file to be
edited. The editor should modify the temporary file and
return a zero exit code to indicate success.
diff-cmd
Здесь указывается абсолютный путь к программе определения отличий, используемой, Subversion для «diff»-вывода (такого как при использовании команды svn diff). По умолчанию для определения отличий Subversion использует внутреннюю библиотеку — установка этого параметра заставит ее использовать внешнюю программу. Подробнее об использовании таких программ читайте в разделе «Using External Differencing Tools».
diff3-cmd
Здесь указывается абсолютный путь к программе трехстороннего сравнения. Subversion использует эту программу при объединении изменений, сделанных пользователем, с теми, которые были получены из хранилища. По умолчанию для определения отличий Subversion использует внутреннюю библиотеку — установка этого параметра заставит ее использовать внешнюю программу. Подробнее об использовании таких программ читайте в разделе «Using External Differencing Tools».
diff3-has-program-arg
Этот флаг должен быть установлен в
true
если программа, указанная в
параметре diff3-cmd
использует
параметр командной строки
--diff-program
.
Раздел tunnels
позволяет определить
новые схемы туннелирования при использовании
svnserve и клиентских подключений через
svn://
. За более подробной информацией
обращайтесь в раздел «SSH идентификация и авторизация».
Все что не попало в другие разделы собирается в разделе
miscellany
[49]. В этом разделе можно найти:
global-ignores
Про выполнении команды svn status,
Subversion перечисляет не версионированные файлы и
директории вместе с версионированными, отмечая их
символом ?
(см. «svn status»). Просмотр
не интересных, не версионированных элементов при просмотре
может раздражать — например объектные файлы, полученные
в результате компиляции программы. Параметр
global-ignores
является перечислением
разделннных пробелом обобщений, представляющих имена файлов и
директорий которые Subversion не должна показывать, если они
не версионированны. Значением, присвоенным по умолчанию,
является *.o *.lo *.la #*# .*.rej *.rej .*~ *~
.#* .DS_Store
.
Также как и svn status, команды
svn add и svn import
при просмотре директорий тоже игнорируют файлы, подходящие
к этому списку. Можно переопределить этот параметр, используя
флаг командной строки --no-ignore
. Более
подробнее о контроле игнорирования см. «Пропуск неверсионированных элементов».
enable-auto-props
Определяет автоматическую установку свойств
для вновь добавляемых или импортированных файлов.
Значением по умолчанию является no
,
поэтому для разрешения авто-свойств установите
yes
. Раздел auto-props
этого файла определяет, какие свойства и для каких файлов
должны устанавливаться.
log-encoding
Эта переменная задает набор символов кодировки для
лог-сообщений фиксаций. Это перманентная форма параметра
--encoding
(см. «Параметры командной строкиsvn»). Хранилище Subversion
хранит лог-сообщения в UTF8, и предполагает, что ваше
лог-сообщение написано используя родную локаль операционной
ситемы. Кодировку необходимо указывать, если
используется любая другая кодировка.
use-commit-times
Как правило, файлы рабочей копии имеют отметки времени, отражающие время последнего обращения к ним какого-либо процесса, был ли это ваш редактор, или подкоманды svn. Это должно быть близко людям, разрабатывающим программное обеспечение, потому, что как правило, системы сборки определяют по метке времени какие файлы требуют перекомпиляции.
С другой стороны, иногда бывает выгодно, что бы
рабочие файлы имели метки времени отражающие время их
последнего изменения в хранилище. Команда svn
export всегда устанавливает «метку времени
последней фиксации» для создаваемого ею дерева
файлов. При установке значения этой переменной в
yes
команды svn
checkout, svn update,
svn switch и svn
revert для используемых ими файлов,
так же будут устанавливать метку времени последней
фиксации.
Раздел auto-props
определяет возможность
Subversion-клиента автоматически устанавливать свойства файлов,
когда они добавлялись или импортировались. Он содержит любое
количество пар ключ-значение, в формате
PATTERN = PROPNAME=PROPVALUE
, где
PATTERN
является файловым шаблоном,
соответствующих набору имен файлов, а остальная часть строки
является свойством и его значением. Множественные совпадения
для одного файла приведут к множественной установке свойств для
этого файла; однако не гарантируется, что порядок установки
авто-свойств будет таким же в каком они указаны в файле
конфигурации, поэтому нельзя будет одним правилом
«перекрыть» другое. Несколько примеров использования
авто-свойств можно найти в файле config
.
Наконец, если хотите использовать авто-свойства, не забудьте в
разделе miscellany
установить
enable-auto-props
в
yes
.