Gerrit配置--⽤户配置
下⾯介绍如何创建Gerrit⽤户,并使⽤⽤户登录已经改配⽤户设定
环境:
Gerrit Server:172.16.206.133
Client:172.16.206.129
1、在Gerrit服务器上创建⽤户
Gerrit服务器使⽤的是HTTP认证类型,并⽤httpd做反向代理,创建⽤户使⽤以下命令
#cd  /home/gerrit2/gerrit/etc
[root@localhost etc]# htpasswd -m passwords user2
New password:
Re-type new password:
Adding password for user user2
根据提⽰输⼊密码即可(密码设置为123456),这样账号就创建好了。创建完成,httpd和gerrit服务不需要重启。
2、登录gerrit⽤户
⽤创建的user2账号访问gerrit,在浏览器地址栏输⼊:
输⼊登录的账号密码,账号为user2,密码为123456
3、修改gerrit⽤户配置
登录后,在⽹页右上⾓点击⾃⼰的⽤户名,在点击“settings”。
settings中就是⽤户的配置相关信息,需要注册邮箱和提交服务器上的公钥
1、提交公钥
注意:为什么要提交公钥⽂件到gerrit服务器?如果不提交公钥,则不能使⽤git push命令将本地代码提交到gerrit服务器。公钥是⼀个认证⽅式。
在客户端172.16.206.129这台服务器上创建公、私钥对,具体命令如下:
[user2@host2 root]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user2/.ssh/id_rsa):
Created directory '/home/user2/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user2/.ssh/id_rsa.
Your public key has been saved in /home/user2/.ssh/id_rsa.pub.
The key fingerprint is:
fd:da:fa:c5:ec:6c:82:60:1f:39:15:bc:62:ec:51:15 user2@host2
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|          . .E. |
|            +    |
|        . . o  |
|        .= o    |
|        So.=    |
|        o =. o  |
|      . o +. +  |
|          oo.+.  |
|          ooooo  |
+-----------------+
⽣成的密钥⽂件如下:
[user2@host2 ~]$ ls .ssh/
id_rsa  id_rsa.pub
id_rsa.pub为公钥⽂件,将该⽂件中的内容,复制并粘贴到settings==>SSH Public Keys中,并点击Add
测试SSH key是否提交成功,在client 172.16.206.129服务器上执⾏以下命令:
#ssh -p 29418  user2@172.16.206.133
29418为gerrit上SSH服务器监听的端⼝,user2为登录的gerrit账号,注意这⾥我们使⽤哪个账号登录gerrit就使⽤哪个账号测试,并且该账号已经登录了gerrit服务器,⽽且公钥已经上传。172.16.206.133为gerrit服务器的IP
[user2@host2 .ssh]$ ssh -p 29418 user2@172.16.206.133
The authenticity of host '[172.16.206.133]:29418 ([172.16.206.133]:29418)' can't be established.
RSA key fingerprint is 93:d3:47:c2:15:32:f0:41:d9:e6:7f:88:66:01:f3:9b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.206.133]:29418' (RSA) to the list of known hosts.
****    Welcome to Gerrit Code Review    ****
Hi user2, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://user2@172.16.206.133:29418/REPOSITORY_NAME.git
Connection to 172.16.206.133 closed.
可以看到连接成功,说明SSH Public Key上传成功。
为user2注册邮箱
点击Register后,登录你刚才注册的邮箱,激活即可。
4、创建⽤户组并创建⼀个项⽬
注意,只有管理员组的⽤户才能创建group和Project
登录Gerrit管理员账号admin,创建⼀个新的组为group2。并将user2账号加⼊该组
新建⼀个Project,名为Project2
5、gerrit代码审核流程
前⾯都是准备⼯作,接下来演⽰gerrit如何做代码审核的
a、client server( 172.16.206.129)的git初始配置
配置⽤户名和邮箱
#git config --global user.name "user2"
#git config --ail "YOUR EMAIL-ADDRESS"
git设置用户名和邮箱
b、⽤账户user2登录gerrit
在Projects==> List中到Projects2,然后点击Clone with commit-msg hook, 在点击ssh按钮,
复制ssh下⾯项⽬地址:
git clone ssh://user2@172.16.206.133:29418/Project2 && scp -p -P 29418 user2@172.16.206.133:hooks/commit-msg Project2/.git/hooks/
直接将刚才复制的命令,在client server的命令⾏运⾏
git clone ssh://user2@172.16.206.133:29418/Project2 && scp -p -P 29418 user2@172.16.206.133:hooks/commit-msg Project2/.git/hooks/
注意:步骤b⼀定选Clone with commit-msg hook下⾯的地址来clone,否则在客户端使⽤git push
命令提交代码时会报错。如果不需要向gerrit服务器提交代码,那么你只需使⽤
git clone
c、创建⼀个⽂件,并提交到gerrit服务器端
[user2@host2 Project2]$ vim test.sh
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
⽤git add 和git commit命令将⽂件保存到git仓库中
[user2@host2 Project2]$ git add test.sh
[user2@host2 Project2]$ git commit -m "创建了test.sh⽂件"
[master 16462e9] 创建了test.sh⽂件
1 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 test.sh
d、⽤git push命令将代码从本地传到gerrit服务器对象项⽬下的master分⽀
[user2@host2 Project2]$ git push origin master:refs/for/master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 341 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: new: 1, refs: 1, done
remote:
remote: New Changes:
remote:  172.16.206.133:8081/5 创建了test.sh⽂件
remote:
To ssh://admin@172.16.206.133:29418/Project2
* [new branch]      master -> refs/for/master
origin:远程仓库的名称,⽤git remote 可以查看所有的远程仓库名称
[user2@host2 Project2]$ git remote
origin
master:refs/for/master 表⽰将代码从本地的master分⽀传到远端的master分⽀,固定格式就是这样
e、⽤user2账号登录Gerrit Web UI,邀请管理员admin来做code review。
注意:之前忘记截图了,所以下图不是原图,但是基本上都⼀样,只有Owner和Project不对⽽已。
Add:添加指定⽤户来进⾏Code Review
Cherry Pick:切换分⽀,当执⾏push操作之后如果发现分⽀不对,需要切换,可以在这⾥点击Cherry Pick按钮进⾏分⽀切换操作。Abandon:撤销push操作,当push之后,如果发现代码有问题,需要修改,可以点击这个按钮,然后修改代码,修改完成后,再次push,然后登陆Gerrit Web UI,会有⼀个Restore按钮,这时候点击Restore,就可以重新申请Code Review。
Rebase和Follow-Up没有到相关资料
e、看看Gerrit服务器上是否有code review的信息
登录gerrit管理员账号admin,在ALL下⾯点击“Open”,看到“创建了test.sh”这条记录。
这⾥“创建了test.sh⽂件”就是git commit -m "创建了test.sh⽂件" 这条命令产⽣的
点开这条记录,看到以下信息
我们可以点开test.sh⽂件看到⾥⾯的内容
还可以看到提交者的信息:
这⾥显⽰的⽤户名和邮箱地址其实是在client server上初始化git时,⽤以下命令配置的
#git config --global user.name "user2"
#git config --ail "YOUR EMAIL-ADDRESS"
点击上上图中的code review和replay进⾏代码审核
-
2 表⽰不通过,+2表⽰代码ok可以通过审核,⽬前还没有深究这个,我理解的就是这样⼦的。
审核后可以看到审核的⽇志
以上就是gerrit代码审核的流程,gerrit仓库是纯粹的代码仓库,不存在work tree这个说法。所以在gerrit仓库⾥⾯执⾏git命令都会报错:
[root@localhost Project2.git]# git status
fatal: This operation must be run in a work tree
但是,如果⽤git clone将gerrit仓库⾥⾯的项⽬clone下来后,就⾃动变成了⼀个git仓库。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。