记一次Git hooks不生效的问题

Yukino 1,742 2022-10-13

前段时间部门Git仓库迁到了Gerrit,主要是增加了一个代码审核的步骤,其中有一步就是用git的commit-msg hooks生成一个Change-Id用于标记,之前都是直接拉仓库就可以了,新来的一个小伙子不知道为什么怎么弄的弄不好,后面查了下资料帮他解决了,觉得比较偏的知识点,所以记录一下

正文

一般来讲gerrit推代码,大多数没有Change-Id的原因是没有把hooks也拉到本地,按照提示执行:

// .git是git rev-parse --git-dir的执行结果,一般来说是.git,没有改过的话
scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg .git/hooks/

就可以将仓库配置的hooks拉到本地,然后再执行一次空提交:

git commit --amend --no-edit

就可以对上一次commit补上Change-Id,但这个小伙子不行;

首先要确定是commit-msg有没有执行,检查了下.git/hooks下有没有commit-msg的文件以及文件是否有可执行权限,发现没问题,加了条打印,也没有输出,我就开始Googlegit hook not execute,毕竟在官方文档里说了只要把对应名称的文件放在.git/hooks中就会执行,这超出我的认知范围了,后来找到一个帖子,里面提到了一个core.hooksPath配置项,可以更改hooks的目录,在那个小伙子的git bash上执行了下:

git config core.hooksPath
// 打印出来的是.husky

在我的电脑上没有任何输出,所以把这个配置项删除掉就好了:

git config --unset core.hooksPath