【问题标题】:Can I set Mercurial config options programmatically?我可以以编程方式设置 Mercurial 配置选项吗?
【发布时间】:2011-01-11 15:16:54
【问题描述】:

我正在寻找一种无需实际编辑文本文件即可设置.hgrc 配置项的方法。我正在尝试跨多个开发人员标准化hgrc 的设置,我想要一个类似的命令

hg --config ui.username=foo

但这也会将该配置更改保存到hgrc 文件中。

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

【问题讨论】:

    标签: mercurial config hgrc


    【解决方案1】:

    如果您希望保存配置更改,则必须有人(您或 Mercurial)编辑配置文件 :-)

    如果你可以调用 Mercurial

    hg --config ui.username=foo
    

    那么你也应该可以做到

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

    这将保存配置更改,无论 ~/.hgrc 文件看起来如何(可以有多个 [ui] 部分)。

    Mercurial 3.0 及更高版本具有the hg config --edit command,可打开包含用户配置文件的编辑器。仍然不是您所要求的,但至少这使得交互式编辑文件变得更加容易。

    【讨论】:

    • 如果运行 hg 的进程没有 '~' 或 HOME 目录,或者它作为具有 '~' 目录的系统/守护程序用户运行,则您无法写入::~ (
    • @Garen:您始终可以设置 HGRCPATH 以覆盖 Mercurial 查找配置文件的位置。这对你的无家可归的守护进程用户来说应该很方便。
    • 某些流行的 CI 系统(例如 TeamCity)无法做到这一点。文档也是完全错误的——例如 hg 没有检查记录在案的系统范围的位置,如 C:\Mercurial,而且我从来无法让它读取广告的注册表位置。在 Linux 上,当您的构建发生在 chroot 中时,您可能无法影响环境设置、没有 homedir 等,这会变得很困难。我可以继续说下去,关键是绕过它们很容易IFF Mercurial 只会让我们在命令行上指定配置文件路径。 :)
    • @Garen:我很惊讶在hg help config 中发现了对C:\Mercurial\Mercurial.ini 的引用——该文件自1.8 版以来就没有被读取过。该文档现已针对即将发布的 Mercurial 2.2.2 版本进行了更新。
    • @Garen:这似乎是 git 的 --config 设施的糟糕替代品。将您的配置回显到文件末尾会损害连续性和结构,并且充其量会覆盖现有的配置元素(而不是“就地”替换或附加它们)。
    【解决方案2】:

    这个表格:

    hg --config ui.username=foo
    

    不保存任何东西。它只设置一次运行的值。

    如果有帮助,您也可以使用/etc/mercurial/hgrc 进行系统范围的设置。

    【讨论】:

      【解决方案3】:

      有一个扩展可以帮助解决这个问题,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
      

      唯一的问题是这会覆盖内置的配置命令,您可以调整代码以更改命令名称,或者使用它。幸运的是,如果您的用例只是设置和获取特定配置,这可能并不重要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-22
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2016-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多