我有一個測試我的代碼的prepush鉤子,但是,它也運行時,我做了git push --tags
。有什麼辦法可以避免這種情況?git預推鉤,不要運行,如果是--tags
也許有一些方法可以檢查其常規推送或其推動--tags
?
更新 - 這是唯一的論據我能找到:
- $ 1名遠程
- $ 2到推正在做URL
我有一個測試我的代碼的prepush鉤子,但是,它也運行時,我做了git push --tags
。有什麼辦法可以避免這種情況?git預推鉤,不要運行,如果是--tags
也許有一些方法可以檢查其常規推送或其推動--tags
?
更新 - 這是唯一的論據我能找到:
我有一個解決方案,但它的真的 kludgey。前一段時間,我設置了一個預先提交的鉤子來阻止我在文件上傳時意外使用-a
。我的解決方案是讀取調用原始git命令的命令(可能也只適用於linux)。
while read -d $'\0' arg ; do
if [[ "$arg" == '--tags' ]] ; then
exit 0
fi
done < /proc/$PPID/cmdline
# and perform your check here
話雖這麼說,嘗試調用掛鉤env
; git設置了一些額外的變量(從GIT_
前綴開始,如GIT_INDEX_FILE
)。
你可以把這個在你推鉤任何東西之前,你不想運行:
# If pushing tags, don't test anything.
grep "refs/tags/" </dev/stdin> /dev/null
if [ "$?" -eq "0" ] ; then
exit 0
fi
如果標準輸入的第一行是指一個標籤,它會退出0和推動。這並不完美,因爲如果你同時推送一個標籤和一個分支,它可能會首先看到標籤,而不會運行其餘的鉤子。但它在大多數情況下都會起作用。
您可以使用環境變量來控制它:
#.git/hooks/pre-push
if [[ $SKIP_HOOKS ]]; then
exit 0
fi
# do things you want...
像這樣運行命令:
SKIP_HOOKS=true git push --tags
調用'env'沒有工作,但劇本是我需要什麼。謝謝! – uglymunky