我想使用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
但是当我运行git commit
时,输出消息是
Run the Unit Test Case?
1) yes
2) no
#?
脚本不会给我任何输入选项的机会;它看起来像挂钩立即退出。我试图从另一个脚本调用pre-commit
,它按预期工作。
如何在Git钩子中使用select
?
答案 0 :(得分:5)
预提交挂钩在stdin重定向的情况下运行(在本例中为/ dev / null),因此您的“select”语句会尝试读取并立即获得EOF。您可以通过重定向输入来解决此问题:
exec < /dev/tty
在select
之前,或在< /dev/tty
部分之后添加done
。