gerrit的Change-Id機制和hook機制

Change-id何時生成?

就是 commit做出修改後,gerrit會將commit-msg觸發,change-id就會被生成出來

這裏引用下資源的兩個機制以免到時找不到。

gerrit 的 Change-Id 機制:

  1. 首先要明確, Change-Id 是 gerrit (代碼審覈平臺)的概念,是gerrit 用以追蹤具體提交的機制 與 git (版本管理) 是沒有關係的.
  2. 已經用 git push 將代碼提交 gerrit 審覈了,這時你發現代碼中有疏漏,修改了一下,執行 git commit --amend, 再次推送還可以成功. 這就是因爲 gerrit 檢查到兩次 push 的 commit 有同一個 change-id, 就認爲是同一個提交,因此可以 amend.
  3.  git push 將代碼提交到 gerrit 審覈,到 gerrit 網站一看,大紅字標着 Can Not Merge 字樣. 我想常用 gerrit 的同學肯定都遇到過這問題. 之前我的做法是, git reset 後,更新代碼,再重新提交. 現在的做法是,不用 git reset 了,直接 git commit --amend, 刪掉 commit log 中的 change-id 那行,然後wq保存退出.這時 gerrit 的那個鉤子腳本會再生成一個不同的 change-id ,這時再更新代碼,重新提交即可成功. 這裏只簡要介紹該方法,具體步驟將在 代碼衝突 場景中詳解.

Change-Id 的生成機制請繼續向下看.

git 的 hook 機制:

  1. 鉤子(hooks)是一些在$GIT-DIR/hooks目錄的腳本, 在被特定的事件(certain points)觸發後被調用。當git init命令被調用後, 一些非常有用的示例鉤子腳本被拷到新倉庫的hooks目錄中; 但是在默認情況下它們是不生效的。 把這些鉤子文件的".sample"文件名後綴去掉就可以使它們生效。

  2. hook機制可以理解爲回調.各個鉤子其實就是一段 bash 腳本,各鉤子腳本的名字都是固定的.可以查看git項目根目錄下的 .git/hooks 這個文件夾,看看都有哪些可用的鉤子. 通常用--amend對commit做出修改後,commit-msg會被重新觸發,change-id就會被生成出來

這裏引薦一篇文章總結是 hook(鉤子)就是一個存放腳本的目錄,我這裏本機是C:\Users\admin\.git\hooks。在這裏面會有一些執行文件。

引用:https://blog.csdn.net/u012843873/article/details/82424514

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章