# Code Review Guildline: Git Commit Message ## 前言 Commit Message 跟寫程式註解滿像的,最好可以寫下「為什麼」你要做這樣的異動,而不是單單只記錄下你做了「什麼」異動。 > Commit Message 最好兼具 Why & What,讓日後進行維護人員更快進入狀況。 ## Commit Message 這樣寫會更好: - 做 issue 的時候,不應該一次 Commit 所有異動,應該獨立 Commit 每個不同意義的異動,這樣 Commit 訊息才會跟異動的程式有關連。 - 每次 Commit 都是針對異動的檔案做說明:Why & What,這樣的訊息能讓日後新人更快進入狀況。 - 可以的話,每次 Commit 加上 issue 編號,方便追蹤相關程式異動原因 (`issue cas#32`) ## 規範 ### Commit Message 規範範例  ### Commit Message 範例解析  ### Commit Message 規範組成 ``` Header: <type>: <subject> - type: 代表 commit 的類別:feat, fix, docs, style, refactor, test, chore,必要欄位。 - subject 代表此 commit 的簡短描述,不要超過 50 個字元,結尾不要加句號,為必要欄位。 Body: 72-character wrapped. This should answer: - Body 部份是對本次 Commit 的詳細描述,可以分成多行,每一行不要超過 72 個字元。 - 說明程式碼變動的項目與原因,還有與先前行為的對比。 Footer: - 填寫專案 issue 編號(如果有的話) ``` #### type 只允許使用以下類別 - **feat**: 新增 or 修改功能 (feature)。 - **fix**: 修補 bug (fix bug)。 - **docs**: 文件,註解 (documentation)。 - **style**: 格式 (不影響程式碼運行的變動 white-space, formatting ...etc)。 - **refactor**: 重構 (既不是新增功能,也不是修補 bug 的程式碼變動)。 - **perf**: 改善效能 (A code change that improves performance)。 - **test**: 增加測試 (when adding missing tests)。 - **chore**: 建構程序或輔助工具的變動 (maintain)。 - **revert**: 撤銷回覆先前的 commit 例如:revert: type(scope): subject (回覆版本:xxxx)。 type 是用來告訴進行 Code Review 的人應該以什麼樣的態度來檢視 Commit 內容。 例如: - 看到 type 為 fix,進行 Code Review 的人就可以用「觀察改的 Code 如何解決錯誤」,的角度來閱讀程式碼。 - 若是 refactor,則可以專注在程式碼試如何被重構,因為重構的本質是不會影響既有功能。 > 利用不同的 Type 來決定進行 Code Review 檢視的角度,可以提升 Code Review 的速度。 ## Commit 訊息範例 ### fix ``` fix: 增加 Excluded Referer 把登入網址加入排除的 referer 中,避免無限重新導向。 issue cas#31 ``` ### feat ``` feat: LoginValidateFormAction 中增加手機驗證的流程 流程包括: - 使用者確認手機 - 發送手機 OTP 驗證碼 - 使用者輸入驗證碼 - 完成手機驗證 issue cas#32 ``` ### chore ``` chore: 更新 .gitlab-ci.yml 內依賴的專案 因為 sif 需要新增事件通知的功能,所以增加新增依賴 plus 核心專案 issue sif#87 ``` ### style ``` style: Format SecurityExpressionUtil 格式重整 ``` ### refactor ``` refactor: 重構碼頭規則設定更新的邏輯 原本程式散落在多個檔案, 為了讓未來方便維護,統一整理到 DmA100Mod 裡面, 調整項目: - DmB300Mod 裡的 setDockRule, updateDockSetting 移除 - DmC100Mod 裡的 updateDockUsage 移除 issue sif#78 ``` ### perf ``` perf: 提升碼頭單據查詢的效能 原本查詢的 api 需要執行大約 5 秒,故做優化。 調整方式: - 原本:每個碼頭跑迴圈向資料庫取得資料 - 改為:一開始先向資料庫撈取所有資料,再回到 Java 分配資料 結果:查詢時間 5 秒 -> 0.2 秒 issue sif#88 ``` ### docs ``` docs: 補上 GenerateServiceTicketAction.doPreExecute 方法的註解 issue #32 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up