什么是Gerrit
Gerrit 是一个基于 web 的代码评审工具, 它基于 git 版本控制系统。Gerrit 旨在提供一个轻量级框架, 用于在代码入库之前对每个提交进行审阅。更改将上载到 Gerrit, 但实际上并不成为项目的一部分, 直到它们被审阅和接受。它是标准开源过程的一个简单工具来支持提交补丁程序, 然后由项目成员在应用到代码库之前进行评审。
1.配置sshkey
生成 SSH Key:
ssh-keygen -t rsa -C "xxxx@xxx.com"
输入命令获取公钥,然后添加入sshKey。
/* macOS 系统 */
pbcopy < ~/.ssh/id_rsa.pub
/* windows 系统 */
clip < ~/.ssh/id_rsa.pub
2.clone代码
进入gerrit的项目代码仓库下,有如下两种clone方式,带有hook的是有提交代码远程路径的,不带hook的是没有远程仓库路径的,这里当然要选择带hook的(下载的时候需要连同hooks钩子脚本)。
3.提交代码
- 首先肯定是add和commit。
git add .
git commit -m ""
- 使用同一个change ID重新提交:
change ID的作用就是用来识别不同的codeReview。git commit --amend命令可以把这次commit的信息与上次的commit合并起来。
git commit --amend
4.推送代码
如果还用git push origin 分支名,那这里会报not permitted,当然是因为gerrit不允许直接将本地修改同步到远程仓库。开发者必须先push到远程仓库的refs/for/*分支上,等待codeReview。
- 而应该使用如下命令推送:
git push origin HEAD:refs/for/branchxxx
5.在线编辑功能
-
可以在gerrit上修改commit message。
6.代码审核
-
然后就会在gerrit上生成一个代码审核的Change-Id,进入这个链接。
-
然后添加2个codeReview人员进行+1+2(审核),完成之后再需要+verify,然后submit就可以入库。
-
将功能代码推到其他分支:
在gerrit上可以直接选择要cherry pick的分支,将代码cp到其他分支,或者切到某个分支使用download patch的命令来cherry pick到本地。
-
Abandon
如果代码因为merge冲突或者是不符合审核规则,可以在gerrit页面进行abandon处理,此时远程仓库拒绝代码合入,也就是远程仓库没有你的提交。
-
rebase
更改当前提交的parent,当执行rebase操作时,git会从两个分支的共同祖先开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。
- 撤销提交:git reset
git reset --hard : 回退版本库,暂存区,工作区。
git reset --mixed: 回退版本库,暂存区。
git reset --soft: 回退版本库。
问题总结:
- git clone下载下来的库,文件夹里试空的。只把一些配置文件下载了,源码都没有下载,但是项目大小却是正确的。
处理:需要checkout一下分支文件就会出现。
2.remote: commit fe0f5b0: warning: subject >50 characters; use shorter first paragraph
处理:提交的信息太多,不应该大于50个长度,reset后重新提交。
网友评论