2013-07-12 131 views
3

我想用Git pre-commit鉤子。我修改了默認的pre-commit文件,並且我的鉤子運行良好。如何在Git鉤子中使用「select」?

現在我要在增加一些選項預提交這樣的代碼:

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

回答

5

預提交鉤子在stdin重定向(在這種情況下爲/ dev/null)的情況下運行,所以你的「select」語句嘗試讀取並立即獲取EOF。您可以解決此通過重新輸入:

exec < /dev/tty 

select之前,或done部分之後添加< /dev/tty

+0

不錯,謝謝! – vane