Go Wiki: 提交訊息

提交訊息,也稱為 CL(更改列表)描述,應按照 https://golang.org.tw/doc/contribute#commit_messages 進行格式化。例如,

net/http: handle foo when bar

[longer description here in the body]

Fixes #12345

值得注意的是,對於主題(描述的第一行)

  • 更改所影響的包的名稱放在冒號之前
  • 冒號後面的部分使用動詞時態 + 短語來完成空白,“此更改將 Go 修改為 ___________”
  • 冒號後面的動詞使用小寫字母
  • 末尾沒有句號
  • 應儘量保持簡短(許多 git 檢視工具偏好在 76 個字元以內,儘管 Go 對此並不十分嚴格)。

對於正文(描述的其餘部分)

  • 文字應換行到大約 76 個字元(主要是為了適應 git 檢視工具),除非您確實需要更長的行(例如,用於 ASCII 藝術、表格或長連結)。
  • Fixes 行放在正文之後,兩者之間有一個空新行。(允許但不要求使用句號,例如 Fixes #12345.)。
  • 提交訊息中包含 Markdown。
  • 我們使用 Signed-off-by 行。不要新增它們。我們的 Gerrit 伺服器和 GitHub 機器人會強制執行 CLA 合規性。
  • 引用 CL 時,請優先使用“CL nnn”或 go.dev/cl/nnn 短連結,而不是直接的 Gerrit URL 或 git hash,因為這樣更具未來相容性。
  • 在儲存庫之間移動程式碼時,請包含 CL、儲存庫名稱和從中/移動到的 git hash,以便更容易追溯歷史/歸因。

不要使用 GitHub 支援的備用別名,如 CloseResolves 來代替 Fixes

要將提交連結到一個問題而不將其標記為已修復——例如,如果提交正在朝著修復方向努力,但尚未完全修復——GitHub 只要求在提交訊息中提及該問題的編號。按慣例,Go 提交會在訊息底部使用 For 來提及,這可能是在預期 Fixes 的地方,即使編號也在提交訊息的正文中提及。

例如

Refactor func Foo.
This will make the handling of <corner case>
shorter and easier to test.

For #12345

在其他 Git 專案中,通常使用 Updates 而不是 For,這也同樣可以接受,儘管它不太符合邏輯(提交併沒有更新問題)。更精確的措辭也同樣適用。在程式碼審查中不要過於挑剔:不值得要求人們從 Updates 或其他內容更改為 For,反之亦然。

Reverts

您可以使用 Gerrit 的 Revert 按鈕回滾更改。Gerrit 會為您生成一個描述。編輯該描述,在 Git 修訂號旁邊或代替它新增要回滾的 Gerrit CL 號。

請勿使用 Gerrit UI 建立對 revert 的 revert,因為這會立即通知相關人員。而是將其作為新更改郵件傳送,並在描述中解釋這是 CL NNNNNN 的向前滾動,而 CL NNNNNN 將其回滾了。

其他儲存庫

對於非“go”儲存庫(“crypto”、“tools”、“net”等),主題仍然是包的名稱,但您需要使用 GitHub org/repo 語法來完全限定問題編號。

cipher/rot13: add new super secure cipher

Fixes golang/go#1234

值得注意的是,第一行主題應包含 x/crypto/ 字首。我們只在問題跟蹤器中使用它。

非規範性引用

GitHub Pull Requests

如果您使用 GitHub Pull Requests,您的提交訊息將由 GerritBot 根據您的 PR 的標題和描述構建。請參閱 GerritBot 如何確定最終的提交訊息?

如果有人要求您修改提交訊息,您需要修改您的 PR。


此內容是 Go Wiki 的一部分。