前段时间部门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