Могу ли я настроить параметры конфигурации Mercurial программно?

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

hg --config ui.username=foo

но также сохраняет это изменение конфигурации в файл hgrc.

Кажется, что это должно быть то, что должно поддерживаться непосредственно в команде vanilla hg, но я не могу найти его где-нибудь.

Ответ 1

Кто-то - либо вам, либо Mercurial - должен будет отредактировать файл конфигурации, если вы хотите сохранить конфигурационное изменение: -)

И если вы можете вызвать Mercurial с помощью

hg --config ui.username=foo

тогда вы также сможете сделать

echo '[ui]' >> ~/.hgrc
echo 'username = foo' >> ~/.hgrc

который сохранит изменение конфигурации, независимо от того, как выглядит файл ~/.hgrc (это может быть несколько разделов [ui]).

Mercurial 3.0 и более поздняя версия команда hg config --edit, которая открывает редактор с конфигурационным файлом пользователя. Все еще не совсем то, о чем вы просите, но по крайней мере это упрощает редактирование файла в интерактивном режиме.

Ответ 2

Эта форма:

hg --config ui.username=foo

Ничего не спасает. Он устанавливает значение только для одного прогона.

Также вы можете использовать /etc/mercurial/hgrc для системных настроек, если это помогает.

Ответ 3

Существует расширение, которое помогает с этим, https://bitbucket.org/alu/hgconfig/wiki/Home

После установки этого hgext вы можете делать такие вещи.

% hg showconfig paths
paths.default=ssh://[email protected]/alu/hgconfig
% hg config paths.upstream $(hg showconfig paths.default)
% hg config paths.default $(hg showconfig paths.default | sed 's|/alu/|/nassrat/|')
% hg showconfig paths
paths.default=ssh://[email protected]/nassrat/hgconfig
paths.upstream=ssh://[email protected]/alu/hgconfig

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