van*_*ane 4 git shell githooks
我想用Git pre-commit
钩子.我修改了默认pre-commit
文件,我的钩子运行良好.
现在我想在预提交中添加一些选项,如下代码:
select run in "yes" "no"
do
case $run in
"yes")UnitTest;;
"no")echo "Ignore Unit Test!";;
*)echo "other";;
esac
done
Run Code Online (Sandbox Code Playgroud)
但是当我运行时git commit
,输出消息是
Run the Unit Test Case?
1) yes
2) no
#?
Run Code Online (Sandbox Code Playgroud)
该脚本不会给我任何输入选项的机会; 它看起来像挂钩立即退出.我试图pre-commit
从另一个脚本调用,它按预期工作.
我如何select
在Git钩子中使用?
预提交挂钩在stdin重定向的情况下运行(在这种情况下为/ dev/null),因此您的"select"语句尝试读取并立即获得EOF.您可以通过重定向输入来解决此问题:
exec < /dev/tty
Run Code Online (Sandbox Code Playgroud)
之前select
,或< /dev/tty
在done
部分之后添加.