Von*_*onC 26
是否应将所有这些组合成一个单独的大型预提交脚本?
是和否:您只能声明一个预提交脚本,因此该脚本应该负责:
所以:
Hav*_*vok 19
您可以使用仅调用其他脚本(子挂钩)的委派脚本:
https://gist.github.com/carlos-jenkins/89da9dcf9e0d528ac978311938aade43
用法:
使您的构建系统在Git hooks目录中为此脚本创建一个符号链接,其中包含您要参加的钩子的名称.
例如,pre-commit.
然后,此挂钩将按字母顺序执行在您以后缀为的挂钩类型命名的文件夹下找到的所有可执行文件(子挂钩).d.
例如,pre-commit.d.
它看起来如何:
.git/hooks/
|_ pre-commit -> ../../tools/git/multihooks.py
|_ pre-commit.d/
|_ 01-cpp_coding_standard
|_ 02-python_coding_standard
|_ 03-something_else
Run Code Online (Sandbox Code Playgroud)
这需要Python3,但你可以使用其他技术来获得类似的东西.
Sim*_*amp 11
您只能拥有一个预提交脚本,因此您必须使用该脚本来调用多个其他脚本。
创建一个可执行/PATH/TO/GIT/.git/hooks/pre-commit文件,包含以下内容:
#!/bin/bash
cd "$(dirname "$0")/pre-commit.d"
for hook in *; do
bash $hook
RESULT=$?
if [ $RESULT != 0 ]; then
echo "pre-commit.d/$hook returned non-zero: $RESULT, abort commit"
exit $RESULT
fi
done
exit 0
Run Code Online (Sandbox Code Playgroud)
然后将所有预提交脚本放在一个新pre-commit.d/目录中。
/PATH/TO/GIT/.git/hooks/
??? pre-commit.d
??? SCRIPT1
??? SCRIPT2
Run Code Online (Sandbox Code Playgroud)
确保脚本文件是可执行的。请记住,工作目录/PATH/TO/GIT/.git/hooks/pre-commit.d/默认位于脚本内。