Файлы конфигурации

Mercurial использует набор файлов конфигурации (сокращенно конфиги), управляющих различными аспектами его поведения.

Конфиги Mercurial - это простые ini-файлы. Файл конфига состоит из разделов (секций), начинающихся с заголовка "[секция]" с последующими настройками вида "имя = значение":

[ui]
username = Имя Фамилия <имя.фамилия@example.net>
verbose = True

Эти параметры далее будут упоминаться как "ui.username" и "ui.verbose" соответственно. См. раздел Синтаксис ниже.

Файлы

Mercurial читает параметры из нескольких файлов, если они существуют. Эти файлы не существуют по умолчанию, и вам нужно создать нужные файлы самостоятельно: глобальные настройки, вроде имени пользователя, обычно помещают в "%USERPROFILE%\mercurial.ini" или "$HOME/.hgrc", а локальные настройки хранятся для каждого хранилища в файле "<хранилище>/.hg/hgrc".

Имена этих файлов зависят от операционной системы. Файлы "*.rc", находящиеся в одном каталоге, читаются в алфавитном порядке, при этом последующие переопределяют предыдущие. Если далее указано несколько путей, первые имеют приоритет над последующими.

  1. (All) "<хранилище>/.hg/hgrc"

    Индивидуальные настройки хранилища - это те, которые действуют только для текущего хранилища. Этот файл не участвует в контроле версий и не скачивается при клонировании. Настройки в этом файле переопределяют настройки других файлов. В Unix и Plan9 большая часть этого файла игнорируется, если он не принадлежат доверенному пользователю или группе. См. документацию по секции "[trusted]".

  2. (Plan 9) "$home/lib/hgrc"
  3. (Unix) "$HOME/.hgrc"
  4. (Windows) "%USERPROFILE%\.hgrc"
  5. (Windows) "%USERPROFILE%\Mercurial.ini"
  6. (Windows) "%HOME%\.hgrc"
  7. (Windows) "%HOME%\Mercurial.ini"

    Файлы конфигурации текущего пользователя, от имени которого. запущен Mercurial. Под Windows 9x "%HOME%" заменяется на %APPDATA%. Настройки из этих файлов применяются ко всем командам, выполняемым этим пользователем в любом каталоге. Настройки из из этих файлов переопределяют общесистемные настройки и настройки данной инсталляции.

  8. (Plan 9) "/lib/mercurial/hgrc"
  9. (Plan 9) "/lib/mercurial/hgrc.d/*.rc"
  10. (Unix) "/etc/mercurial/hgrc"
  11. (Unix) "/etc/mercurial/hgrc.d/*.rc"

    Общесистемные файлы конфигурации действуют для всей системы, в которой установлен Mercurial. Настройки из этих файлов действуют для всех команд, выполняемых всеми пользователями в любом каталоге. Настройки из этих файлов переопределяют настройки инсталляции.

  12. (Plan 9) "<корень-установки>/lib/mercurial/hgrc"
  13. (Plan 9) "<корень-установки>/lib/mercurial/hgrc.d/*.rc"
  14. (Unix) "<корень-установки>/etc/mercurial/hgrc"
  15. (Unix) "<корень-установки>/etc/mercurial/hgrc.d/*.rc"

    Файлы конфигурации инсталляции - это файлы, которые находятся в каталоге, в который установлен Mercurial. "<корень-установки>" - это каталог, в котором находится запущенного исполняемого файла **hg** (или символическая ссылка на него). Например, если Mercurial установлен в "/shared/tools/bin/hg", он будет пытаться прочитать файл "/shared/tools/etc/mercurial/hgrc". Настройки из этих файлов действуют для всех команд, исполняемыми любым пользователем в любом каталоге.

  16. (Windows) "<каталог-установки>\Mercurial.ini" **or**
  17. (Windows) "<каталог-установки>\hgrc.d\*.rc" **or**
  18. (Windows) "HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial"

    Настройки из файлов конфигурации инсталляции/общесистемных файлов влияют на все команды, запускаемые всеми пользователями в любых каталогах. Ключи реестра содержат строки, по формату похожие на PATH, каждая часть которых должна быть путем к файлу "Mercurial.ini" или каталогу с файлами "*.rc". Mercurial просматривает все эти пути в указанном порядке пока не найдет один или более файл конфигурации.

Примечание:

Если используется 32-битная версия Python в 64-битной Windows, используется ключ реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial".

Синтаксис

Файлы конфигурации состоят из разделов (секций), начинающихся с заголовка "[секция]" с последующими настройками вида "имя = значение" (иногда называемыми "ключами конфигурации"):

[spam]
eggs=ham
green=
   eggs

Каждая строка содержит одну настройку. Если последующие строки выделены отступами, они считаются продолжением этой настройки. Ведущие пробелы удаляются из значений. Пустые строки пропускаются. Строки, начинающиеся с "#" или ";" игнорируются и могут использоваться в качестве комментариев.

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

[spam]
eggs=large
ham=serrano
eggs=small

Это установит ключ с именем "eggs" в значение "small".

Секцию также можно определять несколько раз. Секция может быть переопределена в том же и/или другом файле. Например:

[foo]
eggs=large
ham=serrano
eggs=small
[bar]
eggs=ham
green=
   eggs
[foo]
ham=prosciutto
eggs=medium
bread=toasted

Ключи "eggs", "ham" и "bread" секции "foo" будут установлены в значения "medium", "proscuitto" и "toasted" соответственно. Как видно, имеет значение только последняя установка параметра.

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

Строка вида "%include файл" включает файл "файл" в текущий файл конфигурации. Включение рекурсивно, т.е. включенные файлы также могут включать другие файлы. Пути файлов задаются относительно файла конфигурации, в котором находится директива "%include". В имени файла выполняется подстановка переменных окружения и конструкций вида "~user". Это позволяет написать:

%include ~/.hgrc.d/$HOST.rc

чтобы включать различные файлы на разных компьютерах.

Строка "%unset имя" удалит "имя" из текущей секции, если оно было определено ранее.

Значения являются либо текстовыми строками произвольной формы, либо списками текстовых строк, либо логическими значениями. Логические значения устанавливаются в истину с помощью "1", "yes", "true", или "on", а в ложь с помощью "0", "no", "false", или "off" (все нечувствительны к регистру букв).

Элементы списков отделяются пробельными символами или запятыми, за исключением случаев, когда значения заключаются в двойные кавычки:

allow_read = "John Doe, PhD", brian, betty

Кавычки могут быть экранированы предшествующим обратным слэшем. Только кавычки в начале слова являются разделителем (т.е. "foo"bar baz" - это список из "foo"bar" и "baz").

Секции

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

"alias"

Определяет псевдонимы команд Псевдонимы позволяют определить собственную команду с использованием других команд (или псевдонимов), возможно принимающую аргументы. Позиционные аргументы в виде "$1", "$2" ... в определении псевдонима раскрываются перед выполнением. Позиционные аргументы, еще не использованные до "$N" в определении, добавляются в конец выполняемой команды.

Определения псевдонимов состоят из строк вида:

<псевдоним> = <команда> [<аргумент>]...

Например, это определение:

latest = log --limit 5

создает новую команду "latest", которая показывает пять последних ревизий. Можно создавать псевдонимы с использованием уже определенных:

stable5 = latest -b stable

Примечание:

Можно создать псевдоним с именем, совпадающим с именем существующих команд, который переопределит первоначальные команды. Это почти всегда неудачная идея!

Псевдоним может начинаться с "!", тогда он становится псевдонимом командной оболочки (шела). Псевдоним шела исполняется шелом и позволяет запускать произвольные команды. Например,

echo = !echo $@

позволит вам выполнить "hg echo foo", чтобы напечатать "foo" в терминале. Пример получше:

purge = !$HG status --no-status --unknown -0 | xargs -0 rm

Это заставит "hg purge" удалить все неизвестные в хранилище файлы, как это делает расширение purge.

Позиционные аргументы, такие как "$1", "$2" и т.п. в определении псевдонима раскрываются в аргументы команды. Аргументы, для которых нет соответсвующих параметров, удаляются. "$0" раскрывается в имя псевдонима, "$@" - в список всех аргументов, разделенных пробелами. Эти подстановки выполняются до того, как команда будет передана оболочке.

Псевдонимы оболочки выполняются в среде, в которой "$HG" раскрывается в путь к исполняемому в данный момент файлу Mercurial. Это полезно, если вы хотите запустить еще одну команду Mercurial из псевдонима, как это сделано в предыдущем примере для purge. Кроме того, "$HG_ARGS" раскрывается в аргументы, переданные Mercurial. В примере с "hg echo foo", "$HG_ARGS" раскроется в "echo foo".

Примечание:

Некоторые глобальные параметры, такие как "-R", обрабатываются перед псевдонимами оболочки, поэтому они не будут переданы псевдониму.

"annotate"

Параметры, используемые при отображении аннотаций файлов. Все значения являются логическими и по умолчанию установлены в False (Ложь). См. также секцию "diff", в которой имеются сходные параметры для команды diff.

"ignorews"
Игнорировать пробельные символы при сравнении строк
"ignorewsamount"
Игнорировать изменения в количестве пробельных символов
"ignoreblanklines"
Игнорировать изменения, состоящие только из пустых строк

"auth"

Данные для аутентификации по HTTP. Эта секция позволяет хранить имена пользователей и пароли при доступе *к* HTTP-серверам. См. секции "[web]", если вы хотите настроить *кто* может логиниться на ваш HTTP-сервер.

Каждая строка имеет следующий формат:

<имя>.<аргумент> = <значение>

где "<имя>" используется чтобы сгруппировать аргументы в записи аутентификации:

foo.prefix = hg.intevation.org/mercurial
foo.username = foo
foo.password = bar
foo.schemes = http https
bar.prefix = secure.example.org
bar.key = path/to/file.key
bar.cert = path/to/file.cert
bar.schemes = https

Поддерживаемые аргументы:

"prefix"
"*" или префикс URI с указанием схемы или без него. Используется запись аутентификации с самым длинным подходящим префиксом (при этом "*" совпадает со всем и считается совпадением с длиной 1). Если префикс не включает схему, при проверке совпадения из URI также. удаляется схема и далее проверяется аргумент schemes.
"username"
Не обязательный. Имя, используемое при аутентификации. Если не задан, а отдалённый сайт требует базовую или digest-аутентификацию, пользователь должен будет ввести имя. Переменные окружения раскрываются, позволяя написать "foo.username = $USER". Если URI включает имя пользователя, рассматриваются только параметры из секции "[auth]" с совпадающим именем или без имени.
"password"
Не обязательный. Пароль для аутентификации. Если не задан, а отдалённый сайт требует базовую или digest-аутентификацию, пользователь должен будет ввести пароль.

"key"

Не обязательный. Зашифрованный PEM ключ сертификата клиента. Переменные окружения раскрываются в имя файла.

"cert"
Не обязательный. Зашифрованный PEM файл цепочки сертификата клиента. Переменные окружения раскрываются в имя файла.
"schemes"
Не обязательный. Разделенный пробелами список схем URI для этой записи. Используются только если prefix не включает имени схемы. Поддерживаются http и https. Также совпадут для статических http и https соответственно. По умолчанию: https.

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

"committemplate"

Значение параметра "changeset" в этой сецкии используется в качестве шаблона для отображаемого в редакторе текста при фиксации.

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

"extramsg"
Строка: Дополнительное сообщение (обычно 'оставьте пустым чтобы отменить фиксацию.'). Может меняться некоторыми командами или расширениями.

Например, следующий шаблон покажет тот же текст, что показывается по умолчанию:

[committemplate]
changeset = {desc}\n\n
    HG: Enter commit message.  Lines beginning with 'HG:' are removed.
    HG: {extramsg}
    HG: --
    HG: user: {author}\n{ifeq(p2rev, "-1", "",
   "HG: branch merge\n")
   }HG: branch '{branch}'\n{if(currentbookmark,
   "HG: bookmark '{currentbookmark}'\n")  }{subrepos %
   "HG: subrepo {subrepo}\n"              }{file_adds %
   "HG: added {file}\n"                   }{file_mods %
   "HG: changed {file}\n"                 }{file_dels %
   "HG: removed {file}\n"                 }{if(files, "",
   "HG: no files changed\n")}

Примечание:

Для некоторых проблемных кодировок (см. "hg help win32mbcs") следует соблюдать особую острожность в этих настройках, чтобы избежать неверного отображения символов.

Например, если в шаблоне за мультибайтовым символом, оканчивающимся обратным слэшем (0x5c), следует ASCII символ 'n', последовательность '\' и 'n' неверно интерпретируется как перевод строки (сам мультибайтовый символ также будет искажен).

Настраиваемый шабон используется для следующих команд (может потребоваться "--edit"):

"decode/encode"

Фильтры для преобразования файлов при извлечении/фиксации. Обычно используется для обработки переводов строки, локализации или приведении файлов к единому виду.

Фильтр состоит из шаблона с последующей командой. По умолчанию, шаблоны задаются в виде glob'ов, пути относительно корня хранилища. Например, чтобы выбрать все файлы, оканчивающиеся на ".txt", только из корневого каталога хранилища, используйте шаблон ".txt". Чтобы выбрать файлы, оканчивающиеся на ".c", во всем хранилище, используйте шаблон "**.c". Для каждого файла применяется только первый совпавший фильтр.

Команда фильтра может начинаться со спецификатора - "pipe:" или "tempfile:". Если не указан, по умолчанию используется "pipe:".

Команда с "pipe:" должна читать данные со стандартного ввода и печатать преобразованные данные на стандартный вывод.

Пример с pipe:

[encode]
# распаковать архивированные gzip'ом файлы при фиксации для улучшения
# сжатия различий (дельт).
# примечание: Не обязательно хорошая идея, просто пример.
*.gz = pipe: gunzip
[decode]
# пережимать файлы gzip'ом при из записи в рабочий каталог (можно
# безопасно опустить "pipe", т.к. оно используется по умолчанию)
*.gz = gzip

Команда "tempfile:" является шаблоном. Строка "INFILE" заменяется именем временного файла, содержащим данные для фильтрации. Строка "OUTFILE" заменяется именем пустого временного файла, куда должен быть записан вывод команды.

Примечание:

Временные файлы рекомендуются для систем Windows, где стандартные перенаправления ввода/вывода могут иметь странные эффекты и могут повредить содержимое файлов.

Этот механизм используется внутри расширения "eol" чтобы менять символы перевода строки из формата Windows (CRLF) в Unix (LF) и обратно. Рекомендуется использовать это расширения для этой цели.

"defaults"

(устарело. Не используйте эту секцию. Используйте псевдонимы.)

Используйте секцию "[defaults]" чтобы определить параметры по умолчанию для команды, т.е. параметры/аргументы, которые будут автоматически передаваться команде при вызове.

Этот пример по умолчанию запускает команду "hg log" с подробным выводом, а "hg status" заставляет показывать только измененные файлы:

[defaults]
log = -v
status = -m

При определении умолчаний для команд, должны использоваться сами команды, а не из псевдонимы. Умолчания для команд применяются также к определенным псевдонимам.

"diff"

Настройки отображения различий. Все параметры, кроме "unified", являются логическими и по умолчанию имеют значение Ложь (False). См. секцию "annotate" для справки о связанных параметрах команды annotate.

"git"
Использовать расширенный формат git для файлов различий.
"nobinary"
Omit git binary patches.
"nodates"
Не добавлять даты в заголовки файлов различий.
"showfunc"
Для каждого изменения показать, в какой оно сделано функции
"ignorews"
Игнорировать пробельные символы при сравнении строк
"ignorewsamount"
Игнорировать изменения в количестве пробельных символов
"ignoreblanklines"
Игнорировать изменения, состоящие только из пустых строк
"unified"
Показываемое количество строк контекста.

"email"

Настройки для расширений, отправляющих сообщения по email

"from"
Не обязательный. Электронный адрес для заголовка "From" ("от") и конверта SMTP для исходящих сообщений.
"to"
Не обязательный. Разделенный запятыми список адресатов.
"cc"
Не обязательный. Разделенный запятыми список получателей копий писем.
"bcc"
Не обязательный. Разделенный запятыми список получателей скрытых. копий писем.
"method"
Не обязательный. Метод для отправки писем. Если значение "smtp" (по умолчанию), используется SMTP (настройки см. в секции "[smtp]"). В противном случае, используется как имя программы, которая ведет себя как sendmail (принимает для адрес отправителя через параметр -f, список получателей в командной строке, текст письма через стандартный ввод). Обычно значения "sendmail" или "/usr/sbin/sendmail" достаточно, чтобы отправлять письма через sendmail.
"charsets"
Не обязательный. Разделенный запятыми список кодировок, которые считаются удобными для получателей. Адреса, заголовки и части, не содержащие патчи, будут закодированы первой кодировкой, для в которую корректно переводится исходная ("$HGENCODING", "ui.fallbackencoding"). Если корректно преобразовать не удаётся, текст посылается как есть. По умолчанию - пустой (буквально) список.

Порядок кодировок исходящих сообщений:

  1. "us-ascii": всегда первая, независимо от установок.
  2. "email.charsets": в порядке, определенном пользователем
  3. "ui.fallbackencoding": если не содержится в email.charsets
  4. "$HGENCODING": если не содержится в email.charsets
  5. "utf-8": всегда последняя, независимо от установок

Пример:

[email]
from = Joseph User <joe.user@example.com>
method = /usr/sbin/sendmail
# кодировки для западной Европы
# us-ascii, utf-8 omitted, as they are tried first and last
charsets = iso-8859-1, iso-8859-15, windows-1252

"extensions"

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

Если вы знаете, что расширение уже доступно по путям, известным Python'у, можно указать имя модуля с последующим знаком "=", после которого ничего нет.

В противном случае, укажите любое имя с последующим знаком "=", после которого идет путь к файлу ".py" (включая расширение файла) с реализацией расширения.

Чтобы явно отключить расширение, включенное в конфиге более широкой области действия, добавьте "!" перед путем - "foo = !/расш/путь", или "foo = !", если путь не указан.

Пример для "~/.hgrc"

[extensions]
# (расширение progress будет загружено из каталога Mercurial)
progress =
# (это расширение будет загружено из указанного файла)
myfeature = ~/.hgext/myfeature.py

"format"

"usestore"
Использовать формат хранилища "store", который улучшает совместимость с системами, которые путают регистр букв или еще как-нибудь искажают имена файлов. Включен по умолчанию. Отключение этого параметра позволит хранить более длинные имена файлов во многих ситуациях ценой совместимости и позволяет удостовериться, что созданные хранилища будут совместимы с Mercurial до версии 0.9.4.
"usefncache"
Включить или выключить формат хранилища "fncache", который является улучшением формата "store" (который должен быть включен, чтобы использовать fncache) и позволяет использовать длинные имена файлов и избежать использования зарезервированных в Windows имен (например, "nul"). По умолчанию включен. Отключение этого параметра позволяет быть уверенным, что созданные хранилища будут совместимы с Mercurial до версии 1.1.
"dotencode"
Включить или выключить формат хранилища "dotencode", который является улучшением формата "fncache" (который должен быть включен, чтобы использовать dotencode), чтобы решить проблемы с именами файлов, начинающихся с ._ в Mac OS X и пробелов в Windows. По умолчанию включен. Отключение этого параметра позволяет быть уверенным, что формат хранения создаваемого хранилища будет совместим с Mercurial до версии 1.7.

"graph"

Настройки отображения графа в веб-интерфейсе. Эта секция позволяет менять свойства отображаемых элементов по веткам, например, чтобы выделить ветку "default".

Каждая строка имеет следующий формат:

<ветка>.<аргумент> = <значение>

где "<ветка>" - имя настраиваемой ветки. Например:

[graph]
# толшина 2 пикселя
default.width = 2
# красный цвет
default.color = FF0000

Поддерживаемые аргументы:

"width"
Задает толщину ребер графа для ветки в пикселях.
"color"
Задает цвет ребер графа для ветки в шестнадцатиричном RGB-виде.

"hooks"

Команды или функции Python, вызываемые автоматически при различных действиях, таких как начало или завершение фиксации. Можно задавать несколько хуков для одного и того же действия, добавляя к действию суффикс. Можно переопределить глобальный хук, изменив его значения или задав для него пустую строку. Для хука можно задать приоритет, добавив префикс "priority" к имени хука в отдельной строке и задав приоритет. Если приоритет не указан, используется значение по умолчанию - 0.

Пример ".hg/hgrc":

[hooks]
# Обновить рабочий каталог после добавления наборов изменений
changegroup.update = hg update
# не использовать глобальный хук
incoming =
incoming.email = /my/email/hook
incoming.autobuild = /my/build/hook
# выполнять хук autobuild перед другими хуками incoming
priority.incoming.autobuild = 1

Большинство хуков выполняются с переменными окружения, содержащими полезную дополнительную информацию. Для каждого хука ниже, передаваемые ему переменные перечислены с именами вида "$HG_foo".

"changegroup"
Выполняется после того, как группа наборов изменений была добавлена с помощью push, pull или unbundle. ID первого набора изменений содержится в "$HG_NODE". URL источника изменений находится в "$HG_URL".
"commit"
Выполняется после создания нового набора изменений в локальном хранилище. ID созданного набора изменений передается в "$HG_NODE", ID родителей содержатся в "$HG_PARENT1" и "$HG_PARENT2".
"incoming"
Выполняется после того, как набор изменений был добавлен с помощью push, pull или unbundle. ID первого набора изменений содержится в "$HG_NODE". URL источника изменений находится в "$HG_URL".
"outgoing"
Выполняется после отправки изменений из локального хранилища в другое. ID первого набора изменений содержится в "$HG_NODE". Источник операции находится в "$HG_SOURCE"; описание см. в "preoutgoing"
"post-<команда>"
Выполняется после успешного вызова соответствующей команды. Содержимое командной строки передаётся в "$HG_ARGS", код завершения - в "$HG_RESULT". Разобранные аргументы командной строки передаются как "$HG_PATS" и "$HG_OPTS". Они содержат строковое представление данных Python, передаваемых <команде> внутренней реализацией. "$HG_OPTS" - это словарь опций (опущенные опции установлены в значения по умолчанию). "$HG_PATS" - список аргументов. Неудачное завершение хука игнорируется.
"pre-<команда>"
Выполняется перед вызовом соответствующей команды. Содержимое командной строки передаётся в "$HG_ARGS". Разобранные аргументы командной строки передаются как "$HG_PATS" и "$HG_OPTS". Они содержат строковое представление данных Python, передаваемых <команде> внутренней реализацией. "$HG_OPTS" - это словарь опций (опущенные опции установлены в значения по умолчанию)."$HG_PATS" - список аргументов. Если хук возвращает ошибку, команда не выполняется, и Mercurial возвращает код ошибки.
"prechangegroup"
Выполняется перед добавлением группы наборов изменений с помощью pull, push или unbundle. Код возврата 0 разрешает продолжение операции, ненулевой код возврата заставляет push, pull или unbundle завершиться с ошибкой. URL источника изменений содержится в "$HG_URL".
"precommit"
Выполняется перед началом локальной фиксации. Код возврата 0 разрешает продолжение операции, ненулевой код возврата заставляет commit завершиться с ошибкой. ID родителей передаются в "$HG_PARENT1" и "$HG_PARENT2".
"prelistkeys"
Выполняется перед выводом ключей наборов изменений (например, закладок) хранилища. Ненулевой код возврата вызовет завершение с ошибкой. Пространство имен ключа передается в "$HG_NAMESPACE".
"preoutgoing"
Выполняется перед сборкой изменений для отправки из локального хранилища в отдалённое. Ненулевой код возврата вызовет аварийное завершение. Это позволяет предотвратить pull по HTTP или SSH. Также можно отменить и локальные pull, push или bundle, но это неэффективно, т.к. в этом случае можно просто скопировать файлы. Источник операции передается в "$HG_SOURCE". Для "serve" операция выполняется на стороне отдалённого SSH или HTTP хранилища. Для "push", "pull" или "bundle", операция выполняется в локальной системе.
"prepushkey"
Выполняется перед добавлением ключа (например, закладки) в хранилище. Ненулевой код возврата отменит добавление ключа. Пространство имен ключа передается в "$HG_NAMESPACE", ключ в "$HG_KEY", предыдущее значение (если есть) в "$HG_OLD", новое - в "$HG_NEW".
"pretag"
Выполняется перед созданием метки. Код возврата 0 позволит создать метку, ненулевой вызовет завершение с ошибкой. ID помечаемого набора изменений передается в "$HG_NODE", имя метки - в "$HG_TAG". Метка является локальной, если "$HG_LOCAL=1", записывается в хранилище, если "$HG_LOCAL=0".
"pretxnchangegroup"
Выполняется после добавления группы наборов изменений с помощью push, pull или unbundle, до фиксирования транзакции. Группа изменений доступна в программе хука. Это позволяет проверить входящие изменения, перед тем, как принять их. ID первого добавляемого набора изменений передается в "$HG_NODE". Код возврата 0 разрешает зафиксировать транзакцию, ненулевой откатывает ее и заставляет pull, push или unbundle завершиться с ошибкой. URL источника изменений передается в "$HG_URL".
"pretxncommit"
Выполняется после того, как набор изменений был создан, но транзакция еще не зафиксирована. Набор изменений доступен в программе хука. Это позволяет проверить сообщение фиксации и изменения. Код возврата 0 разрешает продолжение фиксации, ненулевой код возврата откатит транзакцию. ID набора изменений передается в "$HG_NODE". ID родителей передаются в "$HG_PARENT1" и "$HG_PARENT2".
"preupdate"
Выполняется перед обновлением рабочего каталога. Код возврата 0 позволяет продолжить обновление. Ненулевой код возврата отменит обновление. ID первого нового родителя передается в "$HG_PARENT1". Если выполняется слияние, ID второго нового родителя доступно в "$HG_PARENT2".
"listkeys"
Выполняется после вывода ключей хранилища (например, закладок). Пространство имен ключа доступно в "$HG_NAMESPACE". "$HG_VALUES" - словарь, содержащий ключи и значения.
"pushkey"
Выполняется после того, как ключ (например, закладка) добавлен в хранилище. Пространство имен ключа доступно в "$HG_NAMESPACE", ключ в - "$HG_KEY", старое значение (если есть) - в "$HG_OLD", новое значение - в "$HG_NEW".
"tag"
Выполняется после создания метки. ID помечаемого набора изменений передается в "$HG_TAG". Метка является локальной, если "$HG_LOCAL=1", но создается в хранилище если "$HG_LOCAL=0".
"update"
Выполняется после обновления рабочего каталога. ID первого нового родителя передается в "$HG_PARENT1". Если выполняется слияние, ID второго родителя доступен в "$HG_PARENT2". Если обновление прошло успешно, "$HG_ERROR=0". При неудаче (например, если есть неразрешенные конфликты) "$HG_ERROR=1".

Примечание:

Вообще говоря обычно лучше использовать стандартные хуки, а не pre- и post-хуки, потому что они гарантированно вызываются с правильным контекстом для транзакций, на которые они влияют. Также такие хуки как "commit" будут вызваны во всех ситуациях, когда создается фиксация (например, tag), а не только по команде commit.

Примечание:

Переменные окружения с пустыми значениями могут не передаться в хуки на платформах вроде Windows. Например, "$HG_PARENT2" будет иметь пустое значение в Unix-подобных ОС, а под Windows вообще будет недоступна.

Синтаксис хуков для Python:

имя_хука = python:modulename.submodule.callable
имя_хука = python:/path/to/python/module.py:callable

Хуки на Python выполняются в рамках процесса Mercurial. Каждый хук вызывается как минимум с тремя аргументами - ключевыми словами: объект интерфейса ("ui"), объект хранилища ("repo") и "hooktype" который определяет, какой вид хука используется. Аргументы, описанные выше как переменные окружения, передаются как ключевые слова без префикса "HG_" с именами в нижнем регистре.

Если хуки Python возвращают значение "true" или возбуждают исключение что расценивается как ошибка.

"hostfingerprints"

Слепки сертификатов известных HTTPS-серверов. При заданном слепке HTTPS-соединение успешно установится только если слепок сертификата сервера совпадает с заданным. Это похоже на работу с известными хостами по ssh. Слепок - это хэш SHA-1 от сертификата, зашифрованного DER. Цепочка CA и web.cacerts не используются для серверов с заданными слепками.

Пример:

[hostfingerprints]
hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0

Поддерживается только если используется Python 2.6 или выше.

"http_proxy"

Используется для доступа к web-хранилищу Mercurial через HTTP-прокси.

"host"
Имя хоста и (необязательный) порт прокси-сервера, например "myproxy:8000".
"no"
Необязательный. Разделенный запятыми список имен хостов, доступных в обход прокси-сервера.
"passwd"
Необязательный. Пароль для аутентификации на прокси-сервере.
"user"
Необязательный. Имя пользователя для аутентификации на прокси.
"always"
Необязательный. Всегда использовать прокси, даже для localhost и записей из "http_proxy.no". True или False. По умолчанию: False.

"merge-patterns"

Эта секция задает инструменты для слияния файлов, подходящих под определенный шаблон. Подходящие сюда программы имеют приоритет перед инструментами по умолчанию. Шаблоны по умолчанию имеют формат glob, пути задаются относительно корня хранилища.

Пример:

[merge-patterns]
**.c = kdiff3
**.jpg = myimgmerge

"merge-tools"

Эта секция настраивает внешние утилиты слияния для работы на уровне файлов. Эти настройки скорее всего были заданы во время установки. Используйте "hg config merge-tools" чтобы проверить текущую конфигурацию. Для доп. информации см. "hg help merge-tools".

Пример "~/.hgrc":

[merge-tools]
# Переопределить изначальное расположение программы
kdiff3.executable = ~/bin/kdiff3
# Задать параметры командной строки
kdiff3.args = $base $local $other -o $output
# Задать повышенный приоритет
kdiff3.priority = 1
# Изменить приоритет преднастроенного инструмента слияния
vimdiff.priority = 0
# Определить новый инструмент
myHtmlTool.args = -m $local $other $base $output
myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
myHtmlTool.priority = 1

Поддерживаемые аргументы:

"priority"
Приоритет, с которым выбирается этот инструмент. По умолчанию 0.
"executable"
Имя или полный путь к исполняемого файлу. В Windows в пути можно использовать переменные окружения с синтаксисом ${ProgramFiles}. По умолчанию: имя программы.
"args"
Аргументы, передаваемые исполняемому файлу инструмента слияния. Следующие переменные обозначают сливаемые и выходной файлы: "$base", "$local", "$other", "$output" ("базовый", "локальный", "другой", "выход"). Значение "$local" и "$other" может меняться в зависимости от действия. Во время обновления или слияния "$local" представляет исходное состояние файла, "$other" представляет ревизию, на которую вы обновляетесь, или ревизию, с которой производится слияние. Во время перебазирования, "$local" представляет ревизию назначения, а "$other" представляет перебазируемый набор изменений. По умолчанию: "$local $base $other"
"premerge"
Пытаться запускать внутренний неинтерактивный инструмент слияния для трех файлов перед запуском внешней программы. Возможны значения "true"(включено), "false"(выключено) или "keep", чтобы оставить маркеры конфликтов в файлах при неудавшемся предварительном слиянии. По умолчанию: True
"binary"
Этот инструмент может использоваться для слияния бинарных файлов. По умолчанию False, если этот инструмент не был выбран при совпадении шаблона имени файла.
"symlink"
Этот инструмент может использоваться для слияния символических ссылок По умолчанию False, даже если инструмент был выбран при совпадении шаблона имени файла.
"check"
Список параметров, свидетельствующих об успехе слияния:
"changed"
Спросить, было ли слияние успешным, если в слитом файле нет изменений.
"conflicts"
Проверить наличие конфликтов, даже если программа слияния сигнализирует об успехе
"prompt"
Всегда спрашивать об успехе слияния, вне зависимости от возвращенного инструментом слияния статуса.
"fixeol"
Пытаться исправить изменения формата новой строки из-за работы программы слияния. По умолчанию: False
"gui"
Эта программа требует графический интерфейс. По умолчанию: False
"regkey"
Ключ реестра Windows, описывающий установочный каталог этого инструмента. Mercurial ищет этот ключ сначала в "HKEY_CURRENT_USER", потом в "HKEY_LOCAL_MACHINE". По умолчанию: не задан
"regkeyalt"
Альтернативный ключ в реестре Windows, который используется если первый ключ не найден. Этот ключ использует ту же семантику "regname" и "regappend", что и первичный ключ. Обычно это используется для поиска 32-битных приложений в 64-битных ОС. По умолчанию: не задан
"regname"
Имя читаемого из реестра параметра. По умолчанию значение не пусто - неименованный параметр.
"regappend"
Строка, добавляемая к прочитанному из реестра значению, как правило это имя исполняемого файла инструмента. По умолчанию: не задан

"patch"

Настройки, используемые при наложении патчей, например, с помощью команды 'import' или расширения Mercurial Queues.

"eol"
Если установлен в 'strict', символы перевода строки в патче и файле, к которому он применяется, остаются без изменений. Если установлен в "lf" или "crlf", формат символа перевода строки игнорируется в обоих файлах при наложении патча и приводятся к LF (Unix) или CRLF (Windows) в результате. Если установлен "auto", переводы строки так же игнорируются при наложении патча, но восстанавливаются в исходный формат для каждого файла. Если файл назначения не существует или не имеет символов перевода строки, сохраняется формат новой строки патча. По умолчанию: strict.

"paths"

Задает читаемые имена для хранилищ. Левая часть - символьное имя, правая - URL, которая задает положение хранилища. Пути по умолчанию могут быть заданы с помощью следующих записей.

"default"
Каталог или URL, используемый для pull, если источник не указан. По умолчанию установлен в хранилище, из которого текущее был клонировано.
"default-push"
Необязательный. Каталог или URL, используемый при операции push, если хранилище назначения не задано.

Собственные пути могут быть определены с помощью задания имени-псевдонима для пути, которое может использоваться в командной строке. Например:

[paths]
my_path = http://example.com/path

Чтобы протолкнуть изменения по пути, определенному в "my_path", выполните команду:

hg push my_path

"phases"

Установки работы с фазами по умолчанию. Подробнее о работе с фазами см. "hg help phases".

"publish"
Управляет поведением черновой фазы при работе в качестве сервера. Если Истина, проталкиваемые наборы изменений становятся публичными на клиенте и на сервере, а затянутые или клонированные наборы изменений становятся публичными на стороне клиента. По умолчанию: True (Истина)
"new-commit"
Фаза для вновь создаваемых фиксаций. По умолчанию: draft (черновая)
"checksubrepos"
Проверять фазу текущей ревизии каждого подхранилища. Возможные значения: "ignore", "follow" and "abort" ("игнорировать", "следовать", "отменить") При любом значении, кроме "ignore", фаза текущей ревизии каждого подхранилища проверяется перед фиксацией в родительское хранилище. Если из этих фаз больше фазы родительского хранилища (например, если подхранилище в фазе "secret" в то время как родительское хранилище в фазе "draft"), фиксация либо отменяется (если checksubrepos установлен в "abort"), либо более высокая фаза используется для фиксации в родительское хранилище (checksubrepos = "follow"). По умолчанию: "follow"

"profiling"

Определяет тип профилирования, формат и выходной файл. Поддерживаются два профилировщика: инструментирующий (instrumenting profiler, далее называется "ls") и сэмплирующий (sampling profiler, "stat").

В описании этой секции 'данные профилирования' означают сырые данные, собранные при профилировании, а 'отчет профилирования' означает статистический текстовый отчет, сгенерированный из данных профилирования. Профилирование выполняется с помощью lsprof.

"type"
Используемый тип профилировщика. По умолчанию: ls.
"ls"
Использовать встренный инструментирующий профилировщик Python. Работает на всех платформах, но каждая строка, которую он показывает, является первой строкой функции. Это ограничение затрудняет поиск проблемного места в нетривиальной функции.
"stat"
Использовать сторонний статистический профилировщик, statprof. В настоящее время работает в Unix, особо полезен для профилирования команд, которые выполняются более 0.1 секуднды.
"format"
Формат профилирования. Специфичен для инструментирующего профилировщика "ls". По умолчанию: text (текстовый).
"text"
Генерировать отчет профилирования. При сохранении в файл, необходимо помнить, что сохраняется только отчет, данные профилирования удаляются. "kcachegrind" Данные профилирования для использования в kcachegrind: после сохранения в файл, он может быть загружен прямо в kcachegrind.
"frequency"
Частота сэмплирования. Только для сэмплирующего профилировщика "stat". По умолчанию: 1000.
"output"
Путь к выходному файлу, куда будут сохранены данные или отчет профилирования. Если файл существует, от перезаписывается. По умолчанию: не задан, данные печатаются в stderr
"sort"
Поле для сортировки. Специфично для инструментирующего профилировщика "ls". "callcount", "reccallcount", "totaltime" или "inlinetime" По умолчанию: inlinetime.
"limit"
Количество отображаемых строк. Специфично для инструментирующего профилировщика "ls". По умолчанию: 30.
"nested"
Максимальное количество строк детализации для каждого основного элемента. Может помочь понять различие между Total и Inline. Специфично для инструментирующего профилировщика "ls". По умолчанию: 5.

"revsetalias"

Определения псевдонимов для множеств ревизий (revsets). Детали см. в "hg help revsets".

"server"

Общие настройки сервера.

"uncompressed"
Разрешать или нет клиентам клонировать клонировать хранилище, использовать несжатый потоковый протокол. При этом передается примерно на 40% больше данных при обычном клонировании, но экономит процессорное время и память на обеих сторонах. По локальной сети (100 Мбит/c и выше) или при очень быстром интернет-соединении, протокол без сжатия намного быстрее (~ в 10 раз) обычного. На большинстве интернет-соединений (медленней 6 Мбит/c), протокол бес сжатия будет медленней из-за большего передаваемого трафика. Этот режим также временно устанавливает блокировку записи на время определения, какие данные передавать. По умолчанию True (включен).
"preferuncompressed"
Если истина, клиенты будут пытаться использовать протокол без сжатия. По умолчанию False (ложь).
"validate"
Проводить или нет проверку полноты проталкиваемых наборов изменений, проверяя, что присутствуют все новые ревизии файлов, имеющиеся в манифесте. По умолчанию False (отключено).

"smtp"

Настройки для расширений, которые рассылают email-сообщения.

"host"
Имя хоста почтового сервера, например "mail.example.com".
"port"
Необязательный. Порт для соединения с почтовым сервером. По умолчанию: 465 (если "tls" установлен в smtps) или 25 (в противном случае).
"tls"
Необязательный. Способ включения TLS при подключении к почтовому серверу: starttls, smtps или none (откл.). По умолчанию: none.
"verifycert"
Необязательный. Верификация сертификата почтового сервера, когда "tls" - starttls или smtps. "strict", "loose" или False. Для "strict" или "loose", сертификат проверяется так же, как он проверяется при соединении по HTTPS. (см. "[hostfingerprints]" и "[web] cacerts"). При "strict", отправка также отменяется, если отсутствуют настройки почтового сервера в "[hostfingerprints]" и "[web] cacerts". --insecure для "hg email" переопределяет этоит параметр в "loose". По умолчанию: "strict".
"username"
Необязательный. Имя пользователя для аутентификации на SMTP-сервере. По умолчанию: не задан.
"password"
Необязательный. Пароль для аутентификации на SMTP-сервере. Если не задан, пользователю будет предложено ввести пароль, а неинтерактивный сеанс завершится неудачей. По умолчанию: не задан.
"local_hostname"
Необязательный. Имя хоста, используемое отправителем для самоидентификации через MTA.

"subpaths"

URL источников подхранилищ могут стать недействительными, если удаленный сервер сменил имя или стал временно недоступным. Эта секция позволяет вам задать правила замены вида:

<шаблон> = <замена>

где "шаблон" - это регулярное выражение, с которым совпадает адрес подхранилища-источника, а "замена" - строка, на которую он будет заменен. Группы, совпадающие в "шаблоне", могут быть использованы в "замене". Например:

http://server/(.*)-hg/ = http://hg.server/\1/

заменит "http://server/foo-hg/" на "http://hg.server/foo/".

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

"trusted"

Mercurial не будет использовать настройки из файла ".hg/hgrc" хранилища, если он не принадлежит доверенному пользователю или группе, поскольку многие функции из hgrc позволяют выполнять произвольные команды. С этим часто возникают проблемы при настройке хуков или расширений для публичных хранилищ или серверов. Однако, web-интерфейс будет использовать некоторые безопасные настройки из секции "[web]".

Эта секции определяет, каким пользователям и группам доверять. Текущему пользователю Mercurial доверяет всегда. Чтобы доверять всем, добавьте группу или пользователя с именем "*". Эти настройки должны быть в *уже доверенном файле*, например "$HOME/.hgrc" пользователя или службы, под которым запущен Mercurial.

"users"
Разделенный запятыми список доверенных пользователей.
"groups"
Разделенный запятыми список доверенных групп.

"ui"

Настройки интерфейса пользователя.

"archivemeta"
Включать или нет содержимое файла .hg_archival.txt, хранящего метаданные (хэши базовой и оконечной (tip) ревизии хранилища) в архивы, создаваемые командой "hg archive" или загруженными через hgweb. По умолчанию True (включено).
"askusername"
Спрашивать или нет имя пользователя при фиксации. Если True, и не установлены ни "$HGUSER", ни "$EMAIL", пользователю будет предложено ввести имя пользователя. Если ничего не введено, будет использовано "ПОЛЬЗОВАТЕЛЬ@ХОСТ". По умолчанию False (отключено).
"commitsubrepos"
Фиксировать или нет измененные подхранилища при фиксации родительского хранилища. Если False, и одно из подхранилищ имеет незафиксированные изменения, фиксация будет отменена. По умолчанию False (выключено).
"debug"
Печатать отладочную информацию. True или False. По умолчанию False.
"editor"
Редактор, вызываемый при фиксации. По умолчанию "$EDITOR" or "sensible-editor".
"fallbackencoding"
Кодировка, используемая если невозможно декодировать лог, используя UTF-8. По умолчанию ISO-8859-1.
"ignore"
Файл, из которого читаются шаблоны игнорируемых файлов данного пользователя. Имеет тот же формате, что и файл .hgignore хранилища. Эта опция поддерживает синтаксис хуков, так что можно задать несколько таких файлов, написав что-то вроде "ignore.other = ~/.hgignore2". Дополнительно см. справку по hgignore.
"interactive"
Разрешить интерактивно спрашивать пользователя. True или False. По умолчанию True (включено).
"logtemplate"
Шаблонная строка для команд, печатающих наборы изменений.
"merge"
Программа для разрешения конфликтов во время ручного слияния. Дополнительно см. "hg help merge-tools". Настройки инструментов для слияния см. в секции "[merge-tools]".
"mergemarkers"
Задает стиль маркеров конфликта. Стиль "detailed" использует параметр "mergemarkertemplate" в качестве шаблона маркера. Стиль "basic" использует 'local' и 'other' в качестве меток маркера. Возможные значения: "basic" или "detailed". По умолчанию: "basic".
"mergemarkertemplate"
Шаблон, используемый для вставки описания ревизии рядом с каждым маркером конфликта слияния. О формате шаблона см. "hg help templates". По умолчанию показывает хэш, метки, ветки, закладки, автора и первую строку сообщения фиксации. Следует обратить внимание на кодировку контролируемых файлов, если вы используете не-ASCII символы в именах меток, веток, закладок, имени автора и/или в сообщениях фиксации. Во время подстановки шаблона, для не-ASCII символов используется кодировка, заданная с помощью глобального параметра "--encoding", "HGENCODING" или других переменных окружения локали. Разная кодировка в сливаемых файлах и маркерах конфликта вызывает серьезные проблемы.
"portablefilenames"
Проверять имена файлов на переносимость. Может быть "warn", "ignore" или "abort". По умолчанию "warn". Если установлен в "warn" (или "true"), на POSIX-совместимых платформах печатается предупреждение, если создается файл с непереносимым именем (т.е. файл, который не может быть создан в Windows, потому что содержит зарезервированные части, вроде "AUX", зарезервированные символы вроде ":", или отличается от уже существующего файла только регистром букв). Если установлен в "ignore" (или "false"), предупреждение на печатается. Если установлен в "abort", команда прерывается. В Windows этот параметр игнорируется, команда завершается с ошибкой.
"quiet"
Печатать меньше информации. True или False. По умолчанию False.
"remotecmd"
Команда, используемая на отдалённой машине для операций clone/push/pull. По умолчанию "hg".
"reportoldssl"
Предупреждать, если невозможно использовать SSL-сертификат из-за старой версии Python (2.5 или старее). True или False. По умолчанию True (Истина).
"report_untrusted"
Предупреждать, если файл ".hg/hgrc" игнорируется, потому что его владелец не доверенный пользователь или группа. True или False. По умолчанию True (включено).
"slash"
Показывать пути используя слэш ("/") в качестве разделителя. Имеет смысл только на системах, где в качестве разделителя в путях используется другой символ (например, Windows использует обратный слэш ("\")). По умолчанию False (отключено).
"ssh"
Команда, используемая для соединений по SSH. По умолчанию "ssh".
"strict"
Требовать точных имен команд, вместо того, чтобы разрешать однозначные сокращения. True или False. По умолчанию False.
"style"
Имя стиля, используемое при выводе результата команды.
"timeout"
Таймаут в секундах, используемый при удержании блокировки, отрицательное число - без таймаута. По умолчанию 600.
"traceback"
Mercurial всегда печатает трассировку вызовов при неизвестном исключении. Если этот параметр установлен в True, трассировка будет печататься при любых исключениях, даже обрабатываемых Mercurial (таких, как IOError или MemoryError). По умолчанию False (отключено).
"username"
Имя автора набора изменений, создаваемого при фиксации. Обычно состоит из имени человека и его электронной почты, например "Василий Пупкин <vasya@example.com>". По умолчанию "$EMAIL" или "пользователь@хост". Если имя пользователя не задано в hgrc, оно должно быть указано вручную или в другом файле hgrc (например, в "$HOME/.hgrc", если администратор задал "username =" в общесистемном файле настроек). Переменные окружения раскрываются в этом параметре.
"verbose"
Увеличивает подробность вывода команд. True or False. По умолчанию False.

"web"

Настройки web-интерфейса. Настройки из этой секции применяются как для встроенного web-сервера (запускаемого "hg serve"), так и для скрипта, запускаемого обычным веб-сервером ("hgweb.cgi" и вариации для FastCGI и WSGI).

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

Для быстрой настройки в доверенной среде, например, частной локальной сети, где можно разрешить push всем, можно использовать такую командную строку:

$ hg --config web.allow_push=* --config web.push_ssl=False serve

Обратите внимание, что это позволит кому угодно проталкивать что угодно на сервер, поэтому так нельзя делать на публичных серверах.

Полный набор опций:

"accesslog"
Где хранить логи доступа. По умолчанию стандартный вывод.
"address"
Адрес прослушиваемого интерфейса. По умолчанию все интерфейсы.
"allow_archive"
Список форматов архивов (bz2, gz, zip), которые можно скачивать. По умолчанию пуст.
"allowbz2"
(УСТАРЕЛО) Разрешать или нет скачивать ревизии хранилища в формате .tar.bz2. По умолчанию False (запрещено).
"allowgz"
(УСТАРЕЛО) Разрешать или нет скачивать ревизии хранилища в формате .tar.gz. По умолчанию False (запрещено).
"allowpull"
Разрешить или нет pull из хранилища. По умолчанию True (разрешать).
"allow_push"
Разрешать или нет push в хранилище. Если простая строка или не задан, push запрещен. Если установлен в специальное значение "*", любой отдалённый пользователь может делать push, даже если он не аутентифицирован. В противном случае, пользователь должен быть аутентифицирован, и его имя должно присутствовать в этом списке. Этот список проверяется после списка deny_push.
"allow_read"
Если пользователь еще не получил отказ в доступе к хранилищу из-за списка deny_read, этот список определяет, можно ли дать доступ к хранилищу этому пользователю. Если этот список не пуст, и пользователь не аутентифицирован и не присутствует в списке, ему будет отказано в доступе. Если список пуст или не задан, то доступ предоставляется всем пользователям по умолчанию. Специальное значение "*" эквивалентно незаданному значению (т.е. доступ разрешен для всех). Этот список проверяется после deny_read.
"allowzip"
(УСТАРЕЛО) Разрешать или нет скачивать ревизии хранилища в формате .zip. По умолчанию False (запрещено). Эта функция создает временные файлы.
"archivesubrepos"
Обходить ли также подхранилища при архивации. По умолчанию False (не обходить).
"baseurl"
Базовый URL, используемый при публикации ссылок в других местах, чтобы сторонние инструменты, например хуки уведомлений, могли составлять URLы. Например: "http://hgserver/repos/".
"cacerts"
Путь к файлу, содержащему список зашифрованных PEM сертификатов. Производится подстановка переменных окружения и строк вида "~user". Если задан на стороне клиента, будет использоваться для идентификации отдалённых HTTPS-серверов с этими сертификатами.

Эта возможность поддерживается только при использовании Python 2.6 или выше. Если вы хотите использовать ее с более ранними версиями Python, установите бэкпортированную версию библиотеки ssl, доступную под адресу "http://pypi.python.org".

Чтобы временно отключить SSL-верификацию, укажите "--insecure" из командной строки.

Вы можете использовать файл сертификата CA OpenSSL, если он имеется на вашей платформе. На большинстве Linux-систем это "/etc/ssl/certs/ca-certificates.crt". В противном случае вам необходимо вручную сгенерировать этот файл. Формат файла:

-----BEGIN CERTIFICATE-----
... (сертификат в base64 зашифрованный PEM) ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (сертификат в base64 зашифрованный PEM) ...
-----END CERTIFICATE-----
"cache"
Включить или нет кэширование в hgweb. По умолчанию True (включено).
"collapse"
Если включен "descend", хранилища в подкаталогах показываются на одном уровне с хранилищами по текущему пути. Если включен и "collapse", хранилища, находящиеся глубже текущего пути, группируются в список элементов, ведущих к этим хранилищам, с возможностью навигации. Таким образом, этот параметр позволяет свернуть каждую коллекцию хранилищ подкаталога в одну запись для этого подкаталога. По умолчанию False (выкл.).
"comparisoncontext"
Количество строк контекста, показываемого при построчном сравнении файлов. Если отрицательно или "full", файлы показыаются целиком. По умолчанию 5. Это значение может быть переопределено параметром запроса "context" команды "comparison", принимающей такие же значения.
"contact"
Имя или электронный адрес человека, ответственного за хранилище. По умолчанию используется ui.username или "$EMAIL" или "unknown", если не задан или пустой.
"deny_push"
Запретить или нет push в хранилище. Если пустой или не задан, push не запрещается. Если установлен в специальное значение "*", push запрещен для всех отдалённых пользователей. В противном случае, все неаутентифицированные пользователи не могут делать push, равно как и пользователи, присутствующие в этом списке. Этот список проверяется перед списком allow_push.
"deny_read"
Запрещать или нет чтение/просмотр хранилища. Если этот список не пуст, неаутентифицированным пользователям запрещается чтение хранилища, равно как и пользователям, перечисленным в этом списке. Если установлен в специальное значение "*", всем отдалённым пользователям запрещается доступ (это требуется редко). Если этот список пуст или не задан, предоставление доступа к хранилищу зависит от списка allow_read (см. описание). Если оба этих списка не заданы или пусты, доступ предоставляется всем пользователям по умолчанию. Если хранилище расшаривается с помощью hgwebdir, запрещенные пользователи не смогут видеть его в списке хранилищ. Список deny_read имеет приоритет (читается раньше) перед allow_read.
"descend"
hgwebdir не будет индексировать подкаталоги. Только хранилища, расположенные прямо по текущему пути будут видны (остальные хранилища все равно будут доступны по индексу, соответствующему их пути).
"description"
Текстовое описание назначения и содержимого хранилища. По умолчанию "unknown" (неизвестно).
"encoding"
Название кодировки. По умолчанию кодировка текущей локали. Например: "UTF-8"
"errorlog"
Куда писать журнал ошибок. По умолчанию stderr.
"guessmime"
Контролирует MIME-типы при скачивании сырого содержимого файла. Установите в True чтобы разрешить hgweb угадывать тип содержимого по расширению файла. При этом HTML файлы будут отдаваться как "text/html", и это может сделать возможными атаки межсайтового скриптинга при обслуживании недоверенных хранилищ. По умолчанию False.
"hidden"
Скрывать ли хранилище в списке hgwebdir. По умолчанию False (не прятать).
"ipv6"
Использовать IPv6. По умолчанию False (не использовать).
"logoimg"
Имя файла с картинкой-логотипом, которая показывается в некоторых шаблонах на каждой странице. Имя файла задается относительно "staticurl". Т.е. полный путь к логотипу - "staticurl/logoimg". Если не задан, будет использован "hglogo.png".
"logourl"
Базовый URL для логотипов. Если не задан, по умолчанию используется "http://mercurial.selenic.com/".
"maxchanges"
Максимальное количество изменений, показываемых в логе. По умолчанию 10.
"maxfiles"
Максимальное количество файлов, показываемых для набора изменений. По умолчанию 10.
"maxshortchanges"
Максимальное количество изменений, показываемых в короткой истории, графе или истории файла (shortlog, graph, filelog pages). По умолчанию 60.
"name"
Имя хранилища, используемое в веб-интерфейсе. По умолчанию текущий рабочий каталог.
"port"
Номер порта для входящих соединений. По умолчанию 8000.
"prefix"
Префикс пути, откуда раздаются хранилища (по умолчанию: корень сервера)
"push_ssl"
Требовать передачи входящих изменений по SSL, чтобы предотвратить кражу паролей. По умолчанию True (требовать).
"staticurl"
Базовый URL для статических файлов. Если не задан, статические файлы (например, фавикон hgicon.png) будут отдаваться самим CGI-скриптом. Используйте этот параметр, чтобы отдавать статику напрямую HTTP-сервером. Пример: "http://hgserver/static/".
"stripes"
Сколько строк должна охватывать "полоса зебры" ("zebra stripe") при многострочном выводе. По умолчанию 1; 0 - отключить.
"style"
Используемый стиль шаблона отображения (template map style)
"templates"
Где искать HTML-шаблоны. По умолчанию установочный каталог.

"websub"

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

По умолчанию шаблоны hgweb применяют эти замены только к полям описания ревизий. Вы можете применять их к чему угодно при создании собственных шаблонов, добавляя вызовы фильтра "websub" (обычно после вызова фильтра "escape".

Это может использоваться, например, чтобы преобразовать ссылки на баги в html-ссылки на баг-трекер, или чтобы преобразовать "markdown-подобный" синтаксис в HTML (см. примеры ниже).

Каждый элемент в этой секции задает имя для фильтра замены. Значение элемента задает само заменяющее выражение. Выражения websub имеют синтаксис расширения interhg, которое в свою очередь заимствует синтаксис Unix-утилиты sed:

имяшаблона = s/ВЫРАЖЕНИЕ_ПОИСКА/ВЫРАЖЕНИЕ_ЗАМЕНЫ/[i]

Вместо "/" можно использовать любые другие разделители. Последний необязательный символ "i" означает поиск, нечувствительный к регистру.

Примеры:

[websub]
issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
italic = s/\b_(\S+)_\b/<i>\1<\/i>/
bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/

"worker"

Настройки параллелизма (master/worker). В настоящее время на Unix-подобных ОС обновления рабочего каталога распараллеливаются, что позволяет значительно увеличить производительность.

"numcpus"
Количество процессоров, используемых в параллельных операциях. По умолчанию максимум из 4 или количества процессоров в системе. Ноль или отрицательное значение означает "использовать настройки по умолчанию"

используйте "hg help -c config" для справки по команде config