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

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