首頁 > 軟體

怎樣寫commit log記錄及如何提交有哪些約定

2022-06-14 14:03:17

前言

據說,80%的程式設計師,不會寫commit記錄。這個比例在無規範的小公司,比例會更高一些,可以看到這是一個多麼普遍的問題。

程式設計師應該寫出簡潔明瞭的commit log,否則對別人和自己來說就是一種困擾。最近程式碼review多了,總有一股想笑的感覺。就像下圖這滿屏的ok,永遠無法從中得知提交人的意圖。

commit log將如何提交?都有哪些約定?其實是有答案的。對於Java程式設計師,尤其幸福。IDEA有一個非常好用的外掛,可以用來輔助你進行程式碼提交,輔助你進行團隊規範建設。接下來,我將帶大家看一看它的使用方法。

安裝外掛

在IDEA的Marketplace中,搜尋Git Commit Template,就可以安裝這個外掛。外掛很小,很快就能下載下來。

正常從IDEA提交程式碼的時候。我們發現多了一個小按鈕。

點選之後,將彈出一個視窗。讓你去設計提交模板。

這麼多資訊,真的讓人頭暈。怪不得程式設計師們都不喜歡寫提交記錄。

其實,在外掛的安裝介面,就已經說明了這個提交記錄的格式。

 <type>(<scope>): <subject>
 <BLANK LINE>
 <body>
 <BLANK LINE>
 <footer>

從描述中,可以肯容易的看到一個提交記錄中,應該包含哪些東西。其中型別最多的,當然是提交型別。

提交型別Type

我們按照外掛顯示的順序來說明一下。

feat 功能feature的意思,也是最常用的。當你的功能有變更的時候,都可以採用這種型別的type

fix 當然指的是bug修復

docs 更新了檔案,或者更新了註釋

style 程式碼格式調整,比如執行了format、更改了tab顯示等

refactor 重構程式碼。指的是程式碼結構的調整,比如使用了一些設計模式重新組織了程式碼

perf 對專案或者模組進行了效能優化。比如一些jvm的引數改動,把stringbuffer改為stringbuilder等

test 這個簡單,就是增加了單元測試和自動化相關的程式碼

build 影響編譯的一些更改,比如更改了maven外掛、增加了npm的過程等

ci 持續整合方面的更改。現在有些build系統喜歡把ci功能使用yml描述。如有這種更改,建議使用ci

chore 其他改動。比如一些註釋修改或者檔案清理。不影響src和test程式碼檔案的,都可以放在這裡

revert 回滾了一些前面的程式碼

除了這些預設的,團隊還可以按照自己的需求,增加新的type。比如專門處理線上工單,就可以創造一個叫做ticket的型別。

範圍scope

scope是範圍的意思,主要指的是程式碼的影響面。scope並沒有要求強制,但團隊可以按照自己的理解進行設計。通常由技術維度和業務維度兩種劃分方式。比如按照技術分為:controllerdtoservicedao等。但因為一個功能提交,會涉及到多個scope(都不喜歡非常細粒度的提交),所以按照技術維度分的情況比較少。

按照業務模組進行劃分,也是比較不錯的選擇。比如分為userorder等劃分,可以很容易看出是影響使用者模組還是order模組。

如果你實在不知道怎麼填,那就留空。

其他

主題subject

這個體現的是總結概括能力,沒得跑。一句話能夠說明主要的提交是什麼。subject也是眾多git管理工具預設顯示的一行。如果你寫的標準,那麼提交記錄看起來就很漂亮很規整。

正文Body

主要填寫詳細的改動記錄。我一般習慣列上1234,但如果你的subject寫的非常好,正文可以直接弱化。但如果時間充裕,填寫上重要記錄的前因後果,需求背景,是一個好的習慣。

尾部Footer

新增一些額外的hook,比如提交記錄之後,自動關閉jira的工單(JIRA和gitlab等是可以聯動的)。在比如觸發一些檔案編譯或者其他動作。

這部分自定義行也是比較強的。

Skip CI

最後還有一個skip CI選項。一般的ci工具,都可以設定提交程式碼時自動觸發編譯。但你可以告訴它忽略本次提交。這可能是因為你提前預判到了一些構建風險,或者就是不想編譯。

End

最後,看一個典型的提交記錄,有了工具的支援,我們的瞎扯也看得正經起來。

fix(order): 修復了1分錢買汽車的bug
商務反饋可以1分錢買汽車,目前已經賣出了100w量
Closes #2455
[skip ci]

其實,提交的核心是typesubject。一個用來表示它的提交型別,一個用來對提交進行概括性總結,寫好了這兩點,就能輕輕鬆鬆秒殺80%的程式設計師了。

有了這些基礎,從commit log,自動生成change log,就變的非常的容易。配合持續整合平臺,自動生成發版的變更記錄,也是可行的,這也是為什麼團隊管理,都在一直強調git的提交規範。因為它確實非常有用。

以上就是怎樣寫commit log記錄及如何提交有哪些約定的詳細內容,更多關於commit log記錄提交約定的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com