公司用的不是常规的gitlab/gitea,我之前用git都是用的source tree,有点水土不服,因此就记录下整个使用流程。
初始化配置
登录
前往武汉测试学习用gerrit:http://*.*.*.*:20080/
使用公司的LDAP账户与密码进行登录.
记得激活邮箱,最好用公司邮箱,激活了邮箱才能正常收到邮件:
创建项目
前往BROWSE - Repositories
等待创建完成。
生成密钥
一路回车即可,可以自己设置密码
ssh-keygen
绑定密钥
打开C:\Users\xiaoh\.ssh\
将里面的密钥复制,粘贴到网页头像 -- setting -- SSH Keys -- 输入New SSH key -- ADD NEW SSH KEY
路径
这样即可:
wsl
由于目前我们大部分还在Windows平台开发,而我们需要使用Ubuntu,因此先准备个wsl吧,Ubuntu20.04即可。
然后用软链接将wsl的目录和Windows目录链接到一起
sudo su
cd /root
mkdir /root/Git
ln -s /mnt/c/Users/xiaoh/'My Documents'/Git /root/Git
mkdir /root/.ssh
ln -s /mnt/c/Users/xiaoh/.ssh .ssh
这样以后直接到/root/Git内推送即可。
获取项目初始化
上面依旧创建了项目,点击进入这个项目,进入你设定的Git目录,拉取项目
git clone "ssh://xiaochangxin@192.168.71.100:29418/zcloud_autoweb_zkeeper_webui" && scp -p -P 29418 xiaochangxin@192.168.71.100:hooks/commit-msg "zcloud_autoweb_zkeeper_webui/.git/hooks/"
使用Clone with commit-msg hook
即可。它在clone 项目的同时,复制 gerrit 提供的 commit-msg 钩子脚本,它的作用是在每次新的提交时生成 change-id。
root@DESKTOP-CL6T7M5:~# sudo su
root@DESKTOP-CL6T7M5:~# cd /root/Git/Zettakit-Git/
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git# ls
essay
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git# git clone "ssh://xiaochangxin@192.168.71.100:29418/zcloud_autoweb_zkeeper_webui" && scp -p -P 29418 你的用户名@服务器IP:hooks/commit-msg "zcloud_autoweb_zkeeper_webui/.git/hooks/"
Cloning into 'zcloud_autoweb_zkeeper_webui'...
Enter passphrase for key '/root/.ssh/id_rsa':
remote: Counting objects: 2, done
remote: Finding sources: 100% (2/2)
remote: Total 2 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2/2), 197 bytes | 197.00 KiB/s, done.
Enter passphrase for key '/root/.ssh/id_rsa':
commit-msg 100% 2174 958.3KB/s 00:00
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git#
转移项目
将你的项目复制到你的这个目录下,目录树如下所示。
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# tree -C -L 2
.
├── autoit-v3
│ ├── install
│ └── script
└── selenium_-pytest_-allure
├── README.md
├── __pycache__
├── config
├── conftest.py
├── logs
├── page
├── pytest.ini
├── report
├── requirements.txt
├── resource
├── run.py
├── test
├── test_case
├── utils
└── venv
为了规范化,新增一个README.md
vim README.md
创建develop分支
为了避免直接把代码合并到master分支,需要创建个develop分支,平常上传的时候先上传到这个分支,确定可以用后再合并到master
前往Repositories - Branches -CREATE NEW
新建一个gitreview
再新建gitreview
vim .gitreview
[gerrit]
host=服务器ip
port=29418
project=zcloud_autoweb_zkeeper_webui
defaultbranch=develop #这里指向了 develop 分支。
注意修改项目名称。
GIT操作
第一次上传
git add .
git commit -m "单节点与多节点部署与重置"
直接使用
git review
由于我没配置我的默认用户名,因此报错了。但没事,,按照提示输入就行了。
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# git review
ssh://root@服务器ip:29418/zcloud_autoweb_zkeeper_webui did not work. Description: root@服务器ip: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Could not connect to gerrit.
Enter your gerrit username: xiaochangxin
Trying again with ssh://用户名@服务器ip:29418/zcloud_autoweb_zkeeper_webui
Enter passphrase for key '/root/.ssh/id_rsa':
Creating a git remote called 'gerrit' that maps to:
ssh://用户名@服务器ip:29418/zcloud_autoweb_zkeeper_webui
Enter passphrase for key '/root/.ssh/id_rsa':
This repository is now set up for use with git-review. You can set the
default username for future repositories with:
git config --global --add gitreview.username "xiaochangxin"
Enter passphrase for key '/root/.ssh/id_rsa':
Enter passphrase for key '/root/.ssh/id_rsa':
remote:
remote: Processing changes: new: 1 (\)
remote: Processing changes: new: 1 (|)
remote: Processing changes: new: 1 (/)
remote: Processing changes: refs: 1, new: 1 (/)
remote: Processing changes: refs: 1, new: 1 (/)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: http://服务器ip:20080/c/zcloud_autoweb_zkeeper_webui/+/201 单节点与多节点部署与重置 [NEW]
remote:
To ssh://服务器ip:29418/zcloud_autoweb_zkeeper_webui
* [new branch] HEAD -> refs/for/develop%topic=master
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui#
此时,本次 commit 已经提交到 gerrit 上,并生成好了change-id,等待审核 Code-Review。这里演示先 Code-Review -1,然后 Code-Review -2,相当于本次提交不通过。接下来,我们在做一下修改,再次提交(注意:这里我们要使用上一次提交的 change-id,意思是再次提交作为上一次的修改补丁),最后 Code-Review +1,Code-Review +2 审核通过本次提交,真正合并到分支上。(以上都是用我一个人的账号进行 Code-Review,实际应用中,可以事先指定好各审核人也就是项目创建者。)
第二次上传
我在这里修改下README.md
,让它描述的更详细点。
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# nano README.md
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# cat README.md
# Zkeeper WEB-UI自动化部署
已测试成功:
- 单节点部署
- 多节点部署
- 单节点重置
这里使用git commit --amend,是表示进行修正,change-id不变,继续提交。git commit --amend
最后进行提交git review
在这里就不会报用户名错误了,因为之前修改了这个项目的用户名。
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# git review
Enter passphrase for key '/root/.ssh/id_rsa':
Enter passphrase for key '/root/.ssh/id_rsa':
remote:
remote: Processing changes: updated: 1 (\)
remote: Processing changes: updated: 1 (|)
remote: Processing changes: refs: 1, updated: 1 (|)
remote: Processing changes: refs: 1, updated: 1 (|)
remote: Processing changes: refs: 1, updated: 1, done
remote:
remote: SUCCESS
remote:
remote: http://服务器ip:20080/c/zcloud_autoweb_zkeeper_webui/+/201 单节点与多节点部署与重置
remote:
To ssh://服务器ip:29418/zcloud_autoweb_zkeeper_webui
* [new branch] HEAD -> refs/for/develop%topic=master
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui#
可以看出updated: 1, done
,是更新了项目。
至此,针对本次的修改才被真正 merge 到分支上了。
合并分支
审核代码
如果你不是管理员,下面的操作不用看了。
如果作为管理,确定提交的分支肯定没已知bug,那就需要进行合并分支了。
在项目的主页上,有两个选项:
1:浏览
2:检查变化
在这里先浏览可以看到这个项目内没一行代码,这是因为master,develop内没审核通过代码。
因此,前往VIEW CHANGES
可以查看提交的代码。点击进去
可以看到主要有以下几个地方需要关注:
1.选择审稿人
2.是否提交到develop等分支中。
编辑审稿人,然后点击send,审稿人就会收到一封邮件(如果邮箱绑定正确的话)
如果是你自己的项目,直接输入评分就可以合并了。
可以看到develop下已经有项目了,但master没文件,因为没将develop分支合并到master。
合并master
由于.gitreview默认是用的develop分支,用命令合并不太方便,因此我用网页进行合并。
一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。
另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。
这里是需要合并所有的改动,因此使用git merge
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# git checkout master
Already on 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# git merge --no-ff gerrit/develop
Already up to date.
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# git commit -m "合并develop到master"
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
root@DESKTOP-CL6T7M5:~/Git/Zettakit-Git/zcloud_autoweb_zkeeper_webui# git push
Enter passphrase for key '/root/.ssh/id_rsa':
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://192.168.71.100:29418/zcloud_autoweb_zkeeper_webui
0ae344d..01ddfe3 master -> master
项目合并进master了。
参考:
Git Review + Gerrit 安装及使用完成 Code-Review
Gerrit 代码审核(Code Review)
Gerrit使用篇-提交代码,合并代码
版权属于:寒夜方舟
本文链接:https://www.wnark.com/archives/167.html
本站所有原创文章采用署名-非商业性使用 4.0 国际 (CC BY-NC 4.0)。 您可以自由地转载和修改,但请注明引用文章来源和不可用于商业目的。声明:本博客完全禁止任何商业类网站转载,包括但不限于CSDN,51CTO,百度文库,360DOC,AcFun,哔哩哔哩等网站。