JGit 预接收挂钩

JGit pre-receive hook

当使用 JGit 时,推送到位于同一服务器上的远程。

1) 如果远程配置为file:///path/to/git/remote,则不会执行预接收钩子。

2) 如果远程配置为ssh://,将执行预接收挂钩。

如果使用 Git 命令行执行相同的推送,将始终执行预接收挂钩。

我不明白为什么会这样。

JGit 不支持所有的钩子;当您通过 ssh: 推送时,远程服务器的 git 实现正在执行 git 挂钩支持。当您使用 JGit 推送到本地存储库时,它只是更新存储库的本地内容。 (我什至不确定使用本地 git 客户端推送到本地存储库是否会执行 pre-receive,因为它不是 运行 git upload-pack,因此不会执行接收。

jGit 支持 PreReceiveHooks,但你需要实现这个钩子——它不是从钩子目录中读取的。

https://download.eclipse.org/jgit/site/5.0.1.201806211838-r/apidocs/org/eclipse/jgit/transport/PreReceiveHook.html