我们在gitblit中有一个预接收钩子,可以防止不需要的提交被推送到服务器。钩子逻辑有时会产生误报。很难做到绝对准确。我们希望能够以某种方式执行push命令的修改版本,从而忽略钩子。
我试过简单地发布git push --force,但它不起作用。钩子不会被忽略。
有没有办法向git push添加自定义参数并在gitblit groovy脚本中解析它们?
有点像

git push origin --ignoreOurCustomHook

然后在剧本里
if(someObject.getParameter('ignoreOurCustomHook') != null)
{
  break
}

深入研究jgit文档到目前为止没有任何有用的东西。也许我可以使用receivePacket.pckIn手动解析整个命令,但它似乎是uber的核心,只是在我第一次尝试读取数据包时崩溃了。
任何关于要调查的事情的建议都是值得赞赏的。

最佳答案

您需要对调试器进行一些尝试,但可以像您希望的那样发送推送参数。让它们进入groovy钩子机制可能很棘手。或许不是。我没看。

git push --receive-pack='git receive-pack --ignoreOurCustomHook' origin master

一旦你有工作,你应该能够设置一个自定义远程来处理这个更干净:
$ cat .git/config
...
[remote "ignoreHook"]
  url = https://somewhere.com/r/myrepo.git
  receivepack = git receive-pack --ignoreCustomHook

$ git push ignoreHook master

关于git - 如何忽略每个命令的Gitblit钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28149262/

10-11 17:31