我为我的Mercurial存储库设置了一个简单的changegroup挂钩,以便将感知用户的更改通过电子邮件发送给我们。我想为我管理的每个存储库使用一个脚本,我还想确定更改组来自的存储库。根据Mercurial Hooks 文档,环境变量HG_URL可用于此目的。但是,我没有得到我期望从这个变量:
预期:
https://repo01/hg/project
实际:
remote:https::rnideffer
为什么这是URL,如何获得我对changegroup hook的期望?
答案 0 :(得分:1)
changegroup
挂钩无法始终告知正在使用的远程URL。来自Hooks chapter of the Mercurial Book:
如果可能的话,Mercurial会告诉你 钩住了“远方”的位置 转移变更集的活动 存储库之间的数据。这是 由Mercurial在Python中提供 参数名为url或环境 变量名为HG_URL。没有评论
此信息并不总是已知。 如果在存储库中调用了一个钩子 通过http或ssh提供的, Mercurial无法分辨出遥控器的位置 存储库是,但它可能知道在哪里 客户端正在连接。在这样的 例如,URL将采取其中一个 以下表格:无评论
remote:ssh:1.2.3.4-remote ssh client, 在IP地址1.2.3.4。没有评论
remote:http:1.2.3.4-remote http 客户端,IP地址为1.2.3.4。如果 客户端正在使用SSL,这将是 远程形式:https:1.2.3.4。没有 评论
所以你被告知他们是从名为rnideffer的机器上通过https推送的。
您是否考虑过使用notify extension?它附带mercurial,几乎完全符合您的描述,并且可以提供将回购名称转换为您想要的URL所需的URL前缀。