在任何非平凡的hg安装中,hgrc往往包含重要内容。
有没有办法完全忽略/绕过从系统,用户到回购级别的所有配置?
用例是在某些自动化脚本中使用一些hg核心功能。目前,如果有任何错误配置(我和我的〜/ .hgrc混乱),脚本将中止它根本不使用的东西。
这是完美的,我可以hg <whatever> --config:none
。
答案 0 :(得分:8)
您可以通过将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.
答案 1 :(得分:2)
似乎没有任何想要执行的选项。但是因为文档说明了
(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