2012-03-16 18 views
6

我們爲GIT提供了一個很好的提交前鉤子,以及一個很好的commit-msg。預提交鉤子執行語法驗證,並且提交消息執行一些其他業務邏輯。這一切運作良好。從Git的命令行控制的條件預提交鉤子:是否有可能?

但是,我想將編碼標準驗證添加到預提交鉤子。事實上,它已經被添加了。但是,我不想嚴格執行我們的開發人員來匹配編碼標準,默認情況下我想驗證代碼的標準,但如果他們想通過編碼標準驗證,我想讓他們通過在提交期間添加參數。

是否有可能捕獲/解釋這是給定過程中提交的pre-commit鉤子水平與git以跳過在pre-commit鉤子編碼標準驗證任何命令行參數(任選?)

或者是否只有在預先提交的消息鉤子中才有可能通過分析特定子字符串的提交消息?

請分享您的最佳實踐,瞭解如何(以及在​​何處)使用git pre-commit hook(或其他git掛鉤)創建命令行控制的條件代碼。

回答

10

這樣做是簡單地使用環境變量的一個簡單的方法:

STANDARDS=no git commit 

,然後在腳本(Bash中的例子,但你可以閱讀ENV在任何一種語言,你的鉤子是瓦爾) :

if [ "$STANDARDS" != "no" ]; then 
    ...check for code standards... 
fi 

Git不會正常通過超出了在man githooks列出每個鉤信息,因此試圖用一個「命令行選項」做一拉git commit --no-standards或其他一些不起作用。

3

要添加到什麼@Amber說,你應該能夠做到:

STANDARDS=no git commit -m "committing" 

,並有適當的pre-commit鉤子將看到環境變量,並作出決定。

當然還有的--no-verify的,但我想你不想跳過整個預提交:

-n
--no-驗證

此選項繞過預先提交和提交msg鉤子。另見 githooks(5)。

相關問題