iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

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

[D4] : A little talk about Git Hooks

Git Hooks是一種腳本,Commit、Push、Rebase時,Git會先去檢查有沒有設置Git Hooks,假若有,則會先執行。那這有什麼好處?

更多的人們共同開發一項大專案時

  1. 可能會有你看不懂的Commit。
  2. 一不小心Push一版有問題的上去Remote端了,造成別人取下來的版本跟著炸掉。
  3. 說好Hot-Fix完Release Branch上之後,忘了Sync回Master Branch,造成之後新開出來的Release Branch老問題重現。
  4. Push前總是忘了跑Unit Test。

團隊確實該有一致的標準跟足夠意識在交付代碼品質上。
但在我來看如果能有保證徹底執行且無需人工去遵循的Flow幫我們做檢查,那是再好不過了。
這正是我接觸Git Hooks的動機,它多次提醒了我還得做什麼事。

在專案底下 ls -a 可以看到.git的隱藏資料夾,進去到hooks後會看到如下:

.sample是因為它在告訴我們,可以在這邊編寫屬於我們的hooks腳本,這些.sample檔是不會被執行的。

這裡有Git Hooks百科大全,我也還沒看完,我挑我需要的來研究:

Commit-Msg

Commit Message送出前,會執行此份腳本,作用為檢查你的Commit訊息。例如:我們可以檢查訊息的格式,甚至將他調整成符合標準的格式。
如果腳本最後輸出非0值,例如:exit 1,則代表Commit失敗,屆時該次Commit會被阻止。
之後會舉些實際實作過的經驗來仔細介紹。

Pre-Push

如同字面上意思,Push前會先執行此腳本,同樣輸出非0值會導致Push失敗。

Pre-Commit

這裡不會用到任何Commit Message,換句話說按下Commit按鈕時,會先執行此腳本。
接著才會跑到Commit-Msg,到那裡才會拿Message來做檢查取改動。
因此這邊能做的事情,我有做過的事情是確認當前Commit的Branch是否是可以直接Commit的,藉此來避免一些人為疏失。

明天我就不廢話開始講第一個實際應用例子


上一篇
[D3] : Automatically schedule task on Windows
下一篇
[D5] : Auto Check Msg Format At Commit
系列文
Re : 從懶開始的自動化生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言