【问题标题】:How can I use "select" in a Git hook?如何在 Git 挂钩中使用“选择”?
【发布时间】:2013-07-10 15:19:54
【问题描述】:

我想使用 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

【问题讨论】:

    标签: git shell githooks


    【解决方案1】:

    pre-commit 钩子在 stdin 重定向的情况下运行(在本例中为 /dev/null),因此您的“select”语句尝试读取并立即获得 EOF。您可以通过重定向输入来解决此问题:

    exec < /dev/tty
    

    select 之前,或在done 部分之后添加&lt; /dev/tty

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 2020-08-22
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多