iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

Re : 從懶開始的自動化生活系列 第 5

[D5] : Auto Check Msg Format At Commit

團隊想要有一致的Commit Msg,但是習慣不好養成,更難免有意外發生打錯字。
若我們今天想要Follow一種特定的格式,這邊我就舉我的習慣為例:

情境大概這樣

我想要的格式有點像Angular Commit Message的格式。
這是 Angular Commit Message Conventions 可以參考參考。

Subject line會長這樣:<type>(<scope>): <subject>
type代表我的Commit類型是什麼,例如test、refactor、fix、feat、urgent。
scope代表我的改動主要是哪個功能,方便一眼看出這個Commit跟哪個功能有關。
subject更多我想補充的資訊,通常我會說我做了什麼。

例如:
feat(order): support multi language
refactor(order): fix duplicate code

實作面

所以我們會有一個commit-msg檔在hooks資料夾底下,內容大概如下:

Line 2 :
$1在Commit Msg這邊是作為存放我打在Commit欄位內容的檔案路徑,利用cat $1$1這個檔案路徑內的數值給讀取出來,再把它包成一個變數賦予給messasge

Line 4 :
這邊我定義了格式應該符合的標準。
這段regex意思是,只要是test|refactor|fix|feat|urgent任一個詞開頭,後面接上一組(任意內容),再接上: 任意內容

Line 5 :
另一種格式標準。
意思是或者是Merge Branch開頭的字眼的話(這個情境我是為了自動產生出來的Merge commit訊息而建立的)

Line 7 :
做了判斷,只要符合Line 4或Line 5任一種情境,就給過。

Line 9 :
不然就印出錯誤訊息,提示我打錯囉我該遵照什麼格式下Commit。並回傳1,阻擋Commit Msg進行。


上一篇
[D4] : A little talk about Git Hooks
下一篇
[D6] : Restrict commit on specific branch
系列文
Re : 從懶開始的自動化生活30

尚未有邦友留言

立即登入留言