环境搭建使用gerrit+ldap的方式,gerrit账号为管理员预设。
登录
右上角点击sign in
输入账号密码
设置ssh 公钥
生成密钥对
在开发主机上生成ssh密钥对,如果已经有了可以直接使用 cat ~/.ssh/id_ed25519.pub
ssh-keygen -t ed25519 -C "your_email@example.com"
cat ~/.ssh/id_ed25519.pub
将公钥填入gerrit
clone 代码到本地
找到需要clone的仓库
选择ssh的方式,并且一定要使用 Clone with commit-msg hook 的方式,否者无法生成Change-ID,造成提交失败
配置git
# 将对应信息改为自己的
git config --global user.name "gerritadmin"
git config --global user.email "admin@example.com"
提交代码
创建自己的分支
root@node-33:~/code/upms# git branch
* master
# 创建自己的分支前确保master已更新
root@node-33:~/code/upms# git pull
Already up-to-date.
# 创建一个自己的本地分支
root@node-33:~/code/upms# git checkout -b mybranch
Switched to a new branch 'mybranch'
开发完成之后,提交到gerrit上
# 本地commit
git status # 查看修改的文件
git add <修改的文件>
git commit -m "this is a demo"
git log #查看提交记录
# push 之前先更新master,然后将自己的分支与master分支对齐
git fetch origin master:master
git rebase master # rebase之后可能会有冲突,需要解决解决冲突(解决冲突见后文)再push
#提交到gerrit,for后面为要合并到的远端分支
git push origin HEAD:refs/for/master
为提交打patch
根据reviewer的评审意见,开发者进行修改并提交patch
# 修改代码
# 提交到本地
git status # 查看修改的文件
git add <修改的文件>
git commit --amend # 追加提交
# push 之前先更新master,然后将自己的分支与master分支对齐
git fetch origin master:master
git rebase master # rebase之后可能会有冲突,需要解决解决冲突(解决冲突见后文)再push
git push origin HEAD:refs/for/master
patch 成功后可以看到
解决冲突
当gerrit上的状体 Merge Conflict 时,需要进行此操作,或者当push 之前rebase master时也可能需要解决冲突。
// 更新分支
$ git fetch origin master:master
// do the rebase
$ git rebase origin/master
// 如有冲突,git status 可以看到哪些文件冲突了
// 解决冲突
...
$ git add <修改的冲突文件,git status 可以查看>
// continue the rebase
$ git rebase --continue
// 解决重提之后将新的patch 提交
$ git push origin HEAD:refs/for/dev
gerrit 评审
gerrit YOUR --> Changes
添加reviewer
使用 git-review 提交代码
https://www.jianshu.com/p/65a9c392ee25
reviewer评审
reviewer打分
-2 不能meger
-1 需要修改
+1 lgtm(look good to me),还需要其他人评审
+2 lgtm,评审通过,代码merge