AMD 介紹 RSR 技術:可為數以千計遊戲提供更好的視覺效果,第一季度上線
前言
在開發過程中經常需要提交程式碼,提交程式碼時需要填寫 Commit Message(提交說明),否則就不允許提交。但是在每個開發人員提交的格式非常不統一,有中文的,有英文的,還有直接廢話文學和直接寫11111的,時間久了連開發人員自己都不知道自己表述的修改內容。
Commit Message 規範
社群有多種 Commit Message 的規範,直接參考 angular 的規範。
Angular 規範是一種語義化的提交規範(Semantic Commit Messages)
- Commit Message 語義化:Commit Message 都會被歸為一個有意義的型別,用來說明本次 commit 的型別。
- Commit Message 規範化:Commit Message 遵循預先定義好的規範,比如 Commit Message 格式固定、都屬於某個型別,這些規範不僅可被開發者識別也可以被工具識別。
在 Angular 規範中,Commit Message 包含三個部分,分別是 Header、Body 和 Footer,格式如下:
<type>[optional scope]: <description>
// 空行
[optional body]
// 空行
[optional footer(s)]
Header 是必需的,Body 和 Footer 可以省略。在以上規範中,必須用括號 () 括起來, [] 後必須緊跟冒號 ,冒號後必須緊跟空格,2 個空行也是必需的。
Header ,包括三個欄位:type(必選)、scope(可選)和 subject(必選)。
type 用來說明 commit 的型別。為了方便記憶,分為 Development 和 Production 共兩類
- Development 一般是專案管理類的變更,不會影響終端使用者和生產環境的程式碼,比如 CI/CD 流程、構建方式等的修改。遇到這類修改,通常也意味著可以免測釋出。
- Production 這類修改會影響最終的使用者和生產環境的程式碼。所以對於這種改動,一定要慎重,並在提交前做好充分的測試。
常見 type 分類
型別 | 類別 | 說明 |
feat | Production | 新增功能 |
fix | Production | 修復bug |
perf | Production | 優化效能 |
refactor | Production | 其他程式碼型別的修改,譬如簡化程式碼,重新命名,刪除冗餘程式碼 |
style | Development | 程式碼格式優化。 |
test | Development | 新增或者修改測試用例 |
ci | Development | 持續整合和部署相關的改動 |
docs | Development | 文件的新增修改 |
chore | Development | 其他型別,譬如構建流程,依賴管理輔助功能等 |
scope 是用來說明 commit 的影響範圍的,不同的專案會有不同的 scope ,scope 不適合設定太具體的值,譬如 docs 文件類變更, user 使用者模組,pay 支付模組等。
subject 是 commit 的簡短描述,必須以動詞開頭、使用現在時。
Body 是對這次提交的詳細描述,Body 部分可以分成多行,而且格式也比較自由。不過,和 Header 裡的一樣,它也要以動詞開頭,使用現在時。此外,它還必須要包括修改的動機,以及和跟上一版本相比的改動點。
Footer 主要用來說明本次 commit 導致的後果。在實際應用中,Footer 通常用來說明不相容的改動和關閉的 Issue/bug 列表,關閉的 Bug 需要在 Footer 部分新建一行,並以 Closes 開頭列出,例如:Closes #123。如果關閉了多個 Issue,可以這樣列出:Closes #123, #432, #886。
以下是一個完整的提交
refactor(elements): remove unneeded Custom Elements polyfill from doc…
In PR #43975, the `Angular Elements` guide was updated to remove
mentions of the Custom Elements-related polyfills, since they are no
longer necessary in v13+ (due to all CLI projects being ES2015+ and all
supported browsers natively supporting Custom Elements).
This commit updates the related docs example boilerplate to not include
the unneeded `@webcomponents/custom-elements` polyfill.
Close #44214
總結
在專案開發中,好的 Commit Message 可以起到以下幾點好處。
- 可以使自己或者其他開發人員能夠清晰地知道每個 commit 的變更內容,方便快速瀏覽變更歷史,比如可以直接略過文件型別或者格式化型別的程式碼變更。
- 可以基於這些 Commit Message 進行過濾查詢。
- 可以基於規範化的 Commit Message 生成 Change Log。
- 可以依據某些型別的 Commit Message 觸發構建或者釋出流程,比如當 type 型別為 feat、fix 時我們才觸發 CI/CD 流程。