Gerrit了解
转自:http://www.uml.org.cn/codeNorms/201901033.asp
1.介绍
Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控制,以及一个用来做Code Review,是Web前台页面。
2.工作流程
Gerrit相对Git提供了一个特有的命名空间“refs/for/”用来定义我们的提交上传到哪个branch,且可以用来区分我们的commit是提交到Gerrit进行审核还是直接提交到Git仓库,格式如下:refs/for/<target-branch> ,Push一个Commit到Gerrit:
$ git commit $ git push origin HEAD:refs/for/master
默认不允许直接Push一个commit到Git仓库:
$ git commit
$ git push origin HEAD:master
3.概念
3.1 Change
一个Change包含一个Change-Id,Change-Id是一串SHA-1字符串。这个Id就是通过我们拉取代码库的时候所拷贝的hooks(hooks/commit-msg)自动生成的。
包含一个或多个Patch Set,以及Owner,Project,Target branch, Comments等信息。
在一个project的每个branch中Change Id是唯一的。(?什么意思?)
3.2 Patch Set
一个Patch Set就是一次commit,Gerrit会将其生成一个Branch暂存。Change中的每提交一个Patch Set表示这个Change的一个新的版本,自动覆盖前一个Patch Set, 默认情况下,仅最后一个Patch Set是有意义的。Code Review通过时,也仅仅是最后一个Patch Set会合并到指定的branch中。
个人Git工作原则一
** 永远是基于远程库的最新代码工作,尽量每一步操作(特别是add/commit/push)都通过git pull --rebase获取一下当前最新版本。**
根据以上原则,建议在将本地commit push到Gerrit之后,立马reset掉,或者重新切换一个新的分支工作。(还是重新切换一个分支工作吧,直接reset风险较大,万一代码不合格倍打回来呢。)
上传一个新的patch set:
当我们的commit被reviewer打回来时,我们可能需要修改并重新提交。可以重新切换回包含此commit的分支,在此代码基础上进行修改,重新add,amend commit:
// rework the change $ git add <path-of-reworked-file> ... // amend commit $ git commit --amend // push patch set $ git push origin HEAD:refs/for/master
个人Git工作原则二
** 尽可能保证每一个Change的完整性以及独立性,且越小越好。**
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2018-08-25 Missing Number-[回溯][难]
2018-08-25 PAT 1088 Rational Arithmetic[模拟分数的加减乘除][难]