欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

教你如何使用Gerrit

程序员文章站 2022-06-17 16:54:45
...

教你如何使用Gerrit

前言:
基于上一篇博客《Gerrit服务器搭建》,现在开始教大家如何使用Gerrit(我用的是V2.10),对于没接触过服务器的我,研究起来真的费劲。之所以写这篇博客,是因为网上的那些文章很多细节问题没有写到,一方面给自己留笔记,其次分享给大家。

步入殿堂:

一、注册邮箱

教你如何使用Gerrit

教你如何使用Gerrit

二、新建项目

教你如何使用Gerrit

建好后点击List就能看到所有项目,JSQB是我新建的项目:
教你如何使用Gerrit

三、克隆项目及拷贝commit_msg脚本至本地

前半部分是拷贝项目,后半部分是将commit-msg脚本拷贝至你本地的.git/hooks目录下。这个脚本的目的是在你提交的时候自动加上Change-Id。

教你如何使用Gerrit

四、项目提交及推送

项目提交后不要直接推送,在终端输入:
git push origin HEAD:refs/for/branch

branch是你的项目分支,例如:
git push origin HEAD:refs/for/master

然后查看Gerrit,我这里的两条记录是已经经过审核并submit:
教你如何使用Gerrit

Question1:

如果你在提交代码前没有把commit-msg脚本下载下来,push时会出现这样的情况(missing or invalid Change-Id line format in commit message footer):

MacBook-Pro:JSQB GaoSir$ git push origin HEAD:refs/for/develop
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 781 bytes | 0 bytes/s, done.
Total 10 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5)
remote: Processing changes: refs: 1, done    
remote: ERROR: missing or invalid Change-Id line format in commit message foote
remote: Suggestion for commit message:
remote: 测试Gerrit2
remote: 
remote: 
remote: Change-Id: I
remote: 
remote: Hint: To automatically insert Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 admin@172.16.8.2:hooks/commit-msg ${gitdir}/hooks/
remote: 
remote: 
To http://172.16.8.2:8090/JSQB
 ! [remote rejected] HEAD -> refs/for/develop (missing or invalid Change-Id line format in commit message footer)
error: failed to push some refs to 'http://aaa@qq.com:8090/JSQB'

怎么办?

输入:
git reset --soft HEAD~1

回退到上次提交之前,然后重新copy脚本(钩子):
scp -p -P 29418 aaa@qq.com:hooks/commit-msg JSQB/.git/hooks/

再重新提交和推送。

Question2:

如果遇到:

no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

在.ssh文件夹下的config文件中添加以下内容(如果没有,新建一个config文件,名字就叫config,没有后缀)

Host *
    KexAlgorithms +diffie-hellman-group1-sha1

五、设置权限

点击Projects-List,我这里用All-Projects做示例:
教你如何使用Gerrit

点击Access-Edit:
教你如何使用Gerrit

这里有多个Reference(如果你设置了权限但是没有生效,那你可能设置在不相关的Reference上了),我这里就先设置几个比较关键的:
教你如何使用Gerrit

  • 代码审核:
    需+2 approved之后才算审核完全通过,进入下一阶段;

  • 代码通过:
    该权限下的用户如果verified了这次提交,那么进入下一阶段;

  • 代码提交:
    该权限下的用户可以进行submit,最终代码成功合入分支。

完了?

嗯,暂时到此为止,后续再完善,到现在饭都没吃。