绕开 Mercurial 代理:为何 http_proxy.no 可能被忽略
通过 http_proxy.no 让内部 Mercurial 仓库主机保持直连,并在更改端点前检查 always 覆盖设置。
Mercurial 代理可以对外部仓库保持默认,而内部主机直连。对于公网 HTTP 线路,从HTTP 代理列表中为默认端点选择主机和端口:
[http_proxy]
host = proxy.example:8080
no = hg.internal.example,localhost
always = falseno 的值是以逗号分隔的主机名列表。Mercurial 的文档说明 always=true 会强制使用代理,即使对于 localhost 和该列表中的条目也是如此。因此,把主机加入 no 却保留该覆盖设置,可能使其线路保持不变。
若只想对单次调用生效,可直接覆盖相关取值,无需重写配置:
hg --config http_proxy.always=false --config http_proxy.no=hg.internal.example incoming仓库配置的默认路径必须确实指向该主机。此示例为命令替换了 no 的值;若该次调用还需要其他必需条目,也要一并包含。
当用户级、仓库级和系统级配置不一致时,用 hg config --source 定位实际生效的设置。分享该输出前请先删除密码。
这些控制适用于基于 Web 的仓库访问。ssh:// 仓库使用另一种传输方式。直接走 HTTP 同样仍然需要网络路径以及仓库自身的凭据。