Вызывать Mercurial без загрузки глобальных и пользовательских настроек - PullRequest
0 голосов
/ 01 октября 2018

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

hg --config ui.username='Test Account <not-a-real-address@example.com>' ...

Однако это все равно считывает глобальные и пользовательские файлы .hgrc на машине, что может повлиять на поведение Mercurial непреднамеренным или нежелательным образом.

Есть ли надежный способ вызвать hg, не просматривая любых конфигурационных файлов, кроме файла .hg/hgrc в репо?Например, с помощью Bash я могу выполнить это с помощью bash --noprofile --norc, но я не вижу аналогичного флага для Mercurial.

Примечание: я знаю о «тяжелых» вариантах, таких как запуск тестов в изолированном режиме.виртуальная среда, такая как Docker.Я, конечно, сделаю что-то подобное в случае необходимости, но мне интересно, есть ли способ настроить сам Mercurial.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

В сценариях вы обычно хотите убедиться, что никакая локальная конфигурация и локализация не нарушают ее.Для этой цели Mercurial предоставляет переменную окружения HGPLAIN=.Таким образом, в ваших сценариях всегда вызывайте mercurial, устанавливая его для этого конкретного вызова mercurial:

HGPLAIN= hg status

Это гарантирует, что вы увидите вывод, произведенный vanilla mercurial.См. Также https://www.mercurial -scm.org / repo / hg / help / environment и способы определения исключений из этого правила, если это необходимо.

0 голосов
/ 01 октября 2018

Обнаружено немного больше поисков Проблема 3147: опция командной строки для отключения ~ / .hgrc , которая была CLOSED WONTFIX, однако предлагаемый обходной путь, похоже, работает должным образом:

$ HGRCPATH= hg ...

Это переопределяет пути поиска по умолчанию для файлов hgrc, хотя и не упоминается (на момент написания) в hgrc docs (правка: упоминается на другой странице ).

Пример:

# lots of inherited config by default
$ hg showconfig | wc
     118     361    7232

$ HGRCPATH= hg showconfig
ui.formatted=True
ui.interactive=False

$ hg init foo && cd foo

$ HGRCPATH= hg showconfig
bundle.mainreporoot=/tmp/foo
ui.formatted=True
ui.interactive=False
...