mercurial pre push hook参数用于获取远程回购路径

mercurial pre push hook参数用于获取远程回购路径,mercurial,mercurial-hook,Mercurial,Mercurial Hook,我试图实现一个mercurial预推钩子,它检查目标repo路径并通过ssh add添加适当的id。不太好的解决方案是检查命令行参数,如果路径不是强制的,则从hgrc文件读取默认值,但是否有更干净的方法仅获取远程路径 我打印了传递到hook方法中的kwargs,但是似乎没有任何能够容纳我所需要的内容。我也尝试过谷歌搜索,但可用的信息几乎没有,这似乎有点像黑色艺术真的。因此,如能参考适当的文件和/或示例,也将不胜感激 干杯,查看hg help config,您似乎可以使用“prechangegro

我试图实现一个mercurial预推钩子,它检查目标repo路径并通过ssh add添加适当的id。不太好的解决方案是检查命令行参数,如果路径不是强制的,则从hgrc文件读取默认值,但是否有更干净的方法仅获取远程路径

我打印了传递到hook方法中的kwargs,但是似乎没有任何能够容纳我所需要的内容。我也尝试过谷歌搜索,但可用的信息几乎没有,这似乎有点像黑色艺术真的。因此,如能参考适当的文件和/或示例,也将不胜感激


干杯,

查看
hg help config
,您似乎可以使用“prechangegroup”钩子和
hg\u 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".

您应该能够使用“预变更组”和“预推”挂钩(注意仪表板)。它以$HG_ARGS的形式提供命令行参数

如果$HG_ARGS是有效的url,则可以使用该url。如果未提供任何内容,请使用作为钩子的关键字参数提供的ui对象

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


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

尽管这看起来很有希望,但不幸的是,在常规推送之前或之后都不会调用此挂钩。嗯,我被文档弄糊涂了,我想是吧。如果将更改添加到当前存储库中,则会运行此钩子(其他人向您推送更改或您从其他人拉取更改)。它确实对您没有用处。这也不会被调用,即使调用了,我也不想依赖$HG_ARGS,因为如果没有提供ARGS,我们将取消默认值。hgrc.Sorry。那个钩子在远程回购上。我没有意识到你想要它,我实际上想要两者都有,我尝试了远程repo,但在我的ubuntu设置中它仍然没有被调用,我不知道环境是否有任何不同。根据文档,你可以使用“预推”(没有测试它)。再次查看$HG_参数以检索url。如果没有参数,请使用ui.config从.hgrc获取默认路径。我花了一段时间才回到这里,但下面是我的python方法(不喜欢说pythonic)实现这一点。如果该方法将“ui”作为参数接收,则ui.config('path','default')将执行此任务@rfkortekaas建议使用ui.config,但我不太确定该怎么做,在玩了一段时间后就明白了。如果他更新了他的答案,我很乐意投赞成票。