我有一个git pre-commit钩子,但是在提交到本地repo之后,脚本没有被调用。这是它的外观,它在python中,钩子文件的名称被称为pre-commit,没有任何扩展名:
#!C:/Users/al/AppData/Local/Programs/Python/Python35-32 python
import sys, os
sys.exit(1)
答案 0 :(得分:2)
您的预提交挂钩可能会遇到以下一个或多个问题:
shebang行应该是用于运行脚本的可执行文件的完整路径。请参阅this以了解使用(或未使用)shebang线的时间。在预提交钩子的情况下,只有在脚本上设置可执行位时才会使用shebang行。
如果解释器的完整路径中有空格,则引用整个路径,如下所示:
#!"C:/Users/al/AppData/Local/Programs/Python/Python35-32 python"
或者,像这样逃避路径中的空间:
#! C:/Users/al/AppData/Local/Programs/Python/Python35-32\ python
precommit.py
)重命名为其他内容,并使用以下作为precommit-hook:
#!/bin/sh
python .git/hooks/pre-commit.py $*
(这不是严格适用于当前的问题,因为OP是在Windows上,但为了完整起见,我将在此处留下以下内容)
如果未设置为可执行,则不会执行预提交挂钩。我在本地进行了测试,以下输出证明:
$ cd ~/test-git
$ cat .git/hooks/pre-commit
#!/usr/local/bin/python
import sys, os
print "yo! this is the pre-commit hook"
sys.exit(1)
$ chmod -x .git/hooks/pre-commit
$ git commit -am "Test"
[master (root-commit) 0b1edce] Test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
$ chmod +x .git/hooks/pre-commit
$ git commit -am "Test"
yo! this is the pre-commit hook
此外,来自https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
要启用挂钩脚本,请将文件放在您的挂钩子目录中 适当命名的.git目录(没有任何扩展名) 且可执行。