Egit 钩子不会被触发

Posted

技术标签:

【中文标题】Egit 钩子不会被触发【英文标题】:Egit hooks do not get triggered 【发布时间】:2011-09-08 02:09:00 【问题描述】:

我有一个带有预提交钩子的 git 存储库,它在 100% 的时间里故意失败。

cat .git/hooks/pre-commit
> exit 1

如果我尝试通过命令行提交,它会按预期失败。但是,如果我从 egit 提交,钩子将被忽略并提交更改。

egit/jgit 还不能识别钩子吗?有解决办法吗?

提前致谢!

【问题讨论】:

做了一个快速的谷歌搜索...看起来目前不支持。 code.google.com/p/egit/issues/detail?id=105 和 bugs.eclipse.org/bugs/show_bug.cgi?id=299315 【参考方案1】:

(原答案:2011 年 6 月)

MatrixFrog 正确指出 bug 299315,其中提到尚不支持这些钩子。

您还可以探索 JGit 存储库,now on GitHub,其中没有显示任何关于钩子的提交。 你可以在EGit User Guide 中搜索“hook”:也没有提到 hook 的概念。


2015 年 3 月更新(4 年后):正如 MariuszS 指出的 in the comments、"hook" is present in JGit。

在 2015 年,支持这些钩子的工作正在进行中:

“Introduce hook support into the FS implementations” “Support for the pre-commit hook”(所以还没有预接收钩子)

那些应该在即将到来的 JGit 3.7 中


2015 年第四季度更新,EGit 4.x 确实支持钩子,如 this answer 中所述。

【讨论】:

@MariuszS 是的,我已经更新了答案。 JGit 3.7 应该开始支持 一些 钩子。 那么现在支持 hooks 了吗? @jayarjo 支持预提交。其他人不多:查看他们的状态git.eclipse.org/r/#/q/project:jgit/jgit+hook 现在 egit 也支持钩子了。看到这个答案:***.com/a/32462648 @AmitM 谢谢。我已经相应地更新了答案。【参考方案2】:

我的解决方法:

运行:git commit -a ...

如果可以,从工作目录中的命令行执行挂钩,并且所有其他 eGit 功能将正常工作。

【讨论】:

以上是关于Egit 钩子不会被触发的主要内容,如果未能解决你的问题,请参考以下文章

尽管状态发生了变化,但自定义钩子不会触发组件重新渲染

在 Angular 4 中,钩子 ngOnChanges 不会在输入时触发

路由导航守卫(导航钩子)

18、 vue-router导航解析及钩子函数

有条件地渲染同一个组件不会触发挂载()钩子。

三分钟教你学Git(十七) - 钩子