2011-01-11 193 views
13

我正在寻找一种方法来设置.hgrc配置项目,而无需实际编辑文本文件。我试图规范hgrc在多个开发人员的设置,我想这样的命令我可以以编程方式设置Mercurial配置选项吗?

hg --config ui.username=foo 

但也会保存配置变化到hgrc文件。

看来这应该是应该在vanilla hg命令中直接支持的东西,但我无法在任何地方找到它。

回答

9

有人 - 你或水银 - 将不得不如果你想要的配置变化要保存:-)

编辑配置文件,如果你能叫水银与

hg --config ui.username=foo 

那么你也应该能够做到

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

这将节省的配置变化,没有关系~/.hgrc文件是如何发生的样子(它是好的,有多重请参阅[ui]章节)。

Mercurial 3.0及更高版本有the hg config --edit command,它会打开一个带有用户配置文件的编辑器。仍然不完全是你要求的,但至少这样可以更轻松地交互式编辑文件。

+3

如果hg正在运行的进程没有'〜'或HOME dir,或者它以具有'〜'目录的系统/守护进程用户身份运行,则无法写入::〜( – Garen 2012-05-02 16:33:05

2

这种形式:

hg --config ui.username=foo 

不保存任何东西。它为仅仅一次运行设定了值。

此外,您可以使用/etc/mercurial/hgrc系统范围的设置,如果这有帮助的话。

1

有一个扩展,有助于这一点,https://bitbucket.org/alu/hgconfig/wiki/Home

installing that 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命令,你可以调整代码更改命令名称,或与之共存。幸运的是,如果您的用例仅仅是设置并获取特定的配置,则可能无关紧要。

相关问题