Mercurial changegroup hook正在传递错误的HG_URL

时间:2011-01-22 00:50:33

标签: mercurial hook

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

预期:

https://repo01/hg/project

实际:

remote:https::rnideffer

为什么这是URL,如何获得我对changegroup hook的期望?

1 个答案:

答案 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前缀。