教你如何使用Gerrit

教你如何使用Gerrit

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

步入殿堂:

一、注册邮箱

教你如何使用Gerrit_第1张图片

教你如何使用Gerrit_第2张图片

二、新建项目

教你如何使用Gerrit_第3张图片

建好后点击List就能看到所有项目,JSQB是我新建的项目:
教你如何使用Gerrit_第4张图片

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

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

教你如何使用Gerrit_第5张图片

四、项目提交及推送

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

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

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

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://[email protected]:8090/JSQB'

怎么办?

输入:
git reset --soft HEAD~1

回退到上次提交之前,然后重新copy脚本(钩子):
scp -p -P 29418 [email protected]: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_第7张图片

点击Access-Edit:
教你如何使用Gerrit_第8张图片

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

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

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

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

完了?

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

你可能感兴趣的:(Gerrit)