2016-10-13 80 views
3

我有一個pre-push腳本,我想要運行每當我推代碼到我的遠程回購的時間。 (運行OSX 10.11.6和Git 2.6.4)提示輸入用戶從Git的GUI

#!/bin/sh 

read -p "*** Did you run tests and lint? (y/n) " -n 1 -r < /dev/tty 
echo # move to a new line 
if [[ $REPLY =~ ^[Yy]$ ]] 
    then 
     echo "*** WITH GREAT POWER COMES GREAT RESPONSIBILITY... ***" 
     exit 0 
fi 

echo "*** ABORTING GIT PUSH ***" 
exit 1 

這個腳本完美的作品,如果我在命令行中運行它,當我嘗試使用git gui推動它在技術上做「工作」 - 問題在於Git GUI只是掛起,因爲沒有輸入框讓我輸入任何內容。

我可以這樣做嗎? GIT中的GUI的

回答

2

部分包括一個單獨的腳本git-gui--askpass其通常用於請求使用UI密碼,但是也可以做是/否的查詢。以下替換與git-gui一起使用,而不是閱讀終端。

#!/bin/bash 

yno=$(git gui--askpass "Did you run the tests and lint (yes/no)?") 
if [ "$yno" = "yes" ] 
then 
    echo "*** WITH GREAT POWER COMES GREAT RESPONSIBILITY... ***" 
    exit 0 
fi 
echo "*** ABORTING GIT PUSH ***" 
exit 1 
+0

好的,我會檢查一下。不過,我也很好奇,如果這在其他GUI工具(例如GitHub Desktop)中運行良好。我試圖爲我的團隊中的每個人寫一個「跨工具」腳本,但我猜這根本不可能。 – arthurakay

+0

如果你有一個團隊,那麼這不是真正的做法。我只是刪除我的機器上惱人的鉤子腳本。作爲審查過程的一部分,您應該花時間研究如何在服務器上集成運行測試和lint。即:建立一個持續集成系統並提出請求。讓開發人員推送功能分支並提出拉取請求。這些可以自動拒絕皮棉或測試失敗。 GitLab就是這樣一個系統。 GitHub也是這樣做的(與各種系統掛鉤)。 – patthoyts