1

我为我的 Mercurial 存储库设置了一个简单的更改组挂钩,以通过电子邮件将更改集发送给感兴趣的用户。我想为我管理的每个存储库使用一个脚本,并且我还想识别变更组来自的存储库。根据 Mercurial Hooks文档,环境变量 HG_URL 可用于此目的。但是,我没有从这个变量中得到我所期望的:

预期的:

https://repo01/hg/project

实际的:

remote:https::rnideffer

为什么这是 URL,以及如何将我期望的内容放入 changegroup 钩子中?

4

1 回答 1

1

changegroup钩子不能总是告诉正在使用的远程 URL 。来自Mercurial Book 的 Hooks 章节

在可能的情况下,Mercurial 将告诉钩子在存储库之间传输变更集数据的活动“远端”的位置。这是由 Mercurial 在名为 url 的 Python 参数或名为 HG_URL 的环境变量中提供的。暂无评论

这些信息并不总是已知的。如果在通过 http 或 ssh 提供服务的存储库中调用钩子,Mercurial 无法判断远程存储库在哪里,但它可能知道客户端从哪里连接。在这种情况下,URL 将采用以下形式之一: 无评论

remote:ssh:1.2.3.4——远程 ssh 客户端,IP 地址为 1.2.3.4。暂无评论

remote:http:1.2.3.4——远程 http 客户端,IP 地址为 1.2.3.4。如果客户端使用 SSL,则格式为 remote:https:1.2.3.4。暂无评论

所以你被告知他们正在通过 https 从名为 rnideffer 的机器上推送。

您是否考虑过使用通知扩展?它随 mercurial 一起提供,几乎完全符合您的描述,并且可以提供将 repo 名称转换为您想要的 URL 所需的 URL 前缀。

于 2011-01-22T20:19:17.847 回答