mercurial pre-push hook参数获取远程repo路径

时间:2015-03-23 00:06:17

标签: mercurial mercurial-hook

我正在尝试实现一个mercurial pre-push hook,它检查目标repo路径并通过ssh-add添加适当的id。不太好的解决方案是检查命令行参数,如果路径没有强制,那么从hgrc文件读取默认值,但是有更简洁的方法来获取远程路径吗?

我打印了传递给钩子方法的kwargs但是没有任何东西看起来像我需要的那样。我也试过谷歌搜索,但可用的信息几乎没有,这看起来有点像黑色艺术真的。因此,任何对体面文档和/或示例的引用也将受到赞赏。

干杯,

2 个答案:

答案 0 :(得分:0)

查看hg help config,您似乎可以使用' prechangegroup' hook和HG_URL环境变量:

"prechangegroup"
  Run before a changegroup is added via push, pull or unbundle. Exit
  status 0 allows the changegroup to proceed. Non-zero status will cause
  the push, pull or unbundle to fail. URL from which changes will come is
  in "$HG_URL".

答案 1 :(得分:0)

你应该可以使用'pre-changegroup'和'pre-push'钩子(注意破折号)。它将命令行参数提供为$ HG_ARGS。

如果$ HG_ARGS是有效的网址,您可以使用该网址。如果没有提供任何内容,请使用作为钩子的关键字参数给出的ui对象。

使用以下命令从配置中检索默认路径:ui.config('paths','default')

由于您还可以在配置文件中编写其他命名的url /路径,因此如果它不包含有效的url和ui.config路径对象的关键字,也应该能够验证$ HG_ARGS