Can I set Mercurial config options programmatically?

泄露秘密 提交于 2019-12-18 18:52:26

问题


I'm looking for a way to set .hgrc configuration items without actually editing the text file. I'm trying to standardize the setup of the hgrc across multiple developers and I would like a command like

hg --config ui.username=foo

but which also saves that config change into the hgrc file.

It seems like this should be something that should be supported directly in the vanilla hg command, but I can't find it anywhere.


回答1:


Someone -- either you or Mercurial -- will have to edit the configuration file if you want the config change to be saved :-)

And if you can call Mercurial with

hg --config ui.username=foo

then you should also be able to do

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

which will save the config change, not matter how the ~/.hgrc file happens to look like (it is okay to have multiple [ui] sections).

Mercurial 3.0 and later has the hg config --edit command that opens an editor with the user config file. Still not quite what you're asking for, but at least this makes it easier to edit the file interactively.




回答2:


This form:

hg --config ui.username=foo

Doesn't save anything. It sets the value for just the one run.

Also you can use /etc/mercurial/hgrc for system wide settings if that helps anything.




回答3:


There is an extension that helps with this, https://bitbucket.org/alu/hgconfig/wiki/Home

After installing that hgext, you can do things like this.

% 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

The only gotcha is this overrides the builtin config command, you can either tweak the code to change the command name, or live with it. Fortunately, it probably would not matter if your use case is simply to set and get specific configs.



来源:https://stackoverflow.com/questions/4659135/can-i-set-mercurial-config-options-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!