【发布时间】:2011-01-11 15:16:54
【问题描述】:
我正在寻找一种无需实际编辑文本文件即可设置.hgrc 配置项的方法。我正在尝试跨多个开发人员标准化hgrc 的设置,我想要一个类似的命令
hg --config ui.username=foo
但这也会将该配置更改保存到hgrc 文件中。
看来这应该是vanilla hg命令直接支持的东西,但我在任何地方都找不到。
【问题讨论】:
我正在寻找一种无需实际编辑文本文件即可设置.hgrc 配置项的方法。我正在尝试跨多个开发人员标准化hgrc 的设置,我想要一个类似的命令
hg --config ui.username=foo
但这也会将该配置更改保存到hgrc 文件中。
看来这应该是vanilla hg命令直接支持的东西,但我在任何地方都找不到。
【问题讨论】:
如果您希望保存配置更改,则必须有人(您或 Mercurial)编辑配置文件 :-)
如果你可以调用 Mercurial
hg --config ui.username=foo
那么你也应该可以做到
echo '[ui]' >> ~/.hgrc
echo 'username = foo' >> ~/.hgrc
这将保存配置更改,无论 ~/.hgrc 文件看起来如何(可以有多个 [ui] 部分)。
Mercurial 3.0 及更高版本具有the hg config --edit command,可打开包含用户配置文件的编辑器。仍然不是您所要求的,但至少这使得交互式编辑文件变得更加容易。
【讨论】:
HGRCPATH 以覆盖 Mercurial 查找配置文件的位置。这对你的无家可归的守护进程用户来说应该很方便。
hg help config 中发现了对C:\Mercurial\Mercurial.ini 的引用——该文件自1.8 版以来就没有被读取过。该文档现已针对即将发布的 Mercurial 2.2.2 版本进行了更新。
这个表格:
hg --config ui.username=foo
不保存任何东西。它只设置一次运行的值。
如果有帮助,您也可以使用/etc/mercurial/hgrc 进行系统范围的设置。
【讨论】:
有一个扩展可以帮助解决这个问题,https://bitbucket.org/alu/hgconfig/wiki/Home
在installing that hgext之后,你可以做这样的事情。
% hg showconfig paths
paths.default=ssh://hg@bitbucket.org/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://hg@bitbucket.org/nassrat/hgconfig
paths.upstream=ssh://hg@bitbucket.org/alu/hgconfig
唯一的问题是这会覆盖内置的配置命令,您可以调整代码以更改命令名称,或者使用它。幸运的是,如果您的用例只是设置和获取特定配置,这可能并不重要。
【讨论】: