如何在Git钩子中询问用户输入?

Alv*_*nti 4 git bash githooks

我一直在尝试编写一个简单的bash脚本作为pre-push钩子,我在推送Java代码时会检查缺少的测试文件.

问题是:read命令没有等待用户输入,它就像没有输入输入一样继续.

has_java="git diff --stat --cached origin/master | grep \"src\/main.*\.java\""
has_test="git diff --stat --cached origin/master | grep \"src\/test.*\.java\""

exit_val=0

if eval $has_java; then
    if eval $has_test; then
        :
    else
        echo "*** NO TESTS WERE FOUND WHILE PUSHING JAVA CODE ***"
        read -n1 -p "Do you want to CONTINUE pushing? [Y/n]" doit
        case $doit in  
            n|N) exit_val=1 ;; 
            y|Y) exit_val=0 ;;
            *) exit_val=0 ;;
        esac
    fi
fi
Run Code Online (Sandbox Code Playgroud)

Alv*_*nti 9

Git钩子不使用标准输入.因此,必须附加来自终端的输入:dev/tty.

只需在命令末尾附加终端即可使用:

read -n1 -p "Do you want to CONTINUE pushing? [Y/n]" doit < /dev/tty