В mercurial есть ли способ отключить ВСЕ конфигурации (система, пользователь, репо)? - PullRequest
6 голосов
/ 23 декабря 2010

В любой нетривиальной установке hg hgrc, как правило, содержит существенные вещи.

Есть ли способ полностью игнорировать / обходить ВСЕ конфигурации, от системы, пользователя, до уровня репо?

Вариант использования - использование некоторых основных функций hg в некоторых сценариях автоматизации.В настоящее время, если что-то настроено неправильно (и я часто связываюсь с моим ~ / .hgrc), сценарии прервутся из-за того, что он вообще не использует.1007 *.

Ответы [ 2 ]

8 голосов
/ 23 декабря 2010

Вы можете сделать это, установив переменную окружения HGRCPATH во что-то без ее настройки.

ry4an@hail [~/hg/crew] % hg showconfig | grep Ry4an
ui.username=Ry4an Brase <ry4an@msi.umn.edu>
ry4an@hail [~/hg/crew] % HGRCPATH=/dev/null hg showconfig | grep Ry4an
ry4an@hail [~/hg/crew] % 

Также, если вы вызываете из скрипта, учтите и HGPLAIN.

Оба найдены здесь: https://www.mercurial -scm.org / repo / hg / file / e3b87fb34d00 / mercurial / help / environment.txt

Который говорит:

    41 HGRCPATH
    42     A list of files or directories to search for configuration
    43     files. Item separator is ":" on Unix, ";" on Windows. If HGRCPATH
    44     is not set, platform default search path is used. If empty, only
    45     the .hg/hgrc from the current repository is read.
    46 
    47     For each element in HGRCPATH:
    48 
    49     - if it's a directory, all files ending with .rc are added
    50     - otherwise, the file itself will be added
    51 
    52 HGPLAIN
    53     When set, this disables any configuration settings that might
    54     change Mercurial's default output. This includes encoding,
    55     defaults, verbose mode, debug mode, quiet mode, tracebacks, and
    56     localization. This can be useful when scripting against Mercurial
    57     in the face of existing user configuration.
    58 
    59     Equivalent options set via command line flags or environment
    60     variables are not overridden.
2 голосов
/ 23 декабря 2010

Кажется, у вас нет выбора для выполнения желаемого.Но поскольку в документации указано, что

(Unix, Windows) /.hg/hgrc

Параметры конфигурации для каждого репозитория, которые применяются только в конкретном репозитории.Этот файл не контролируется версией и не будет передан во время операции «клонирования». Параметры в этом файле переопределяют параметры во всех других файлах конфигурации. В Unix большая часть этого файла будет игнорироваться, если он не принадлежит доверенному пользователю или доверенной группе.См. Документацию для доверенного раздела ниже для получения дополнительной информации.

Следующий скрипт будет читать stdin и преобразовывать вывод hg -showconfig в конфигурацию переопределения, которая может быть записана в <repo>/.hg/hgrc.Фактически он переопределяет все текущие настройки, найденные hg.Сценарий может быть изменен, но пока он работает.

# File override.py

import sys

config = dict()
for l in sys.stdin.readlines():
    section, sep, value = l.partition('.')
    if not section in config:
        config[section] = []
    config[section].append(value.split("=")[0])

for k in iter(config):
    print "[{0}]".format(k)
    for v in config[k]:
        print v + "="

Затем его можно использовать так:

> rm -f .hg/hgrc
> hg -showconfig | python override.py > .hg/hgrc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...