Gitlab fork and code review
1、CodeReview的目的
CodeReview的目的是提升代码质量,尽早发现潜在缺陷与BUG,降低修复成本,同时促进团队内部知识共享,帮助更多人更好地理解系统。
2、git fork项目合作流程
![](https://img-blog.csdnimg.cn/20200102112120591.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
1、fork项目:从其他人的项目A中fork一份到自己github或者gitlab的项目目录下
2、clone项目: clone一份自己的项目到本地 git clone xxxxxxx.git
3、修改远程项目路径:
添加:git remote add upstream xxxxxxx.git
修改:git remote set-url origin <url>
删除:git remote rm origin
4、使用git remote -v查看: 可以看到有upstream 和 origin
3、源项目与自己的本地代码进行合并git pull upstream
或者git fetch upstream git merge upstream
4、修改本地项目代码之后,使用git add .然后提交git commit -m "提交的信息"将修改的代码合并
5、提交代码到自己的远程项目中:git push origin master
6、通过pull request提交到他人项目中:在自己的github上找到pull request;如果是gitlab,找到merge request新建将自己修改的代码推送到原项目进行审核。
7、分支的使用
git branch 查看一下当前分支
git branch xx 新建一个xx分支,但是不会切换到上面去
git checkout xxxx 切换到xxxx分支上面
git checkout -b xxx 表示创建并切换到xxx分支上面
get merge xx 合并xx分支到当前的分支上面
git branch -d xxx 删除xxx分支
3、管理者配置工程权限(私有云工程为例)
(1)设置merge request settings 权限
![](https://img-blog.csdnimg.cn/2020010211214594.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(2)设置分支保护,不允许任何角色push,只允许masters merge code
![](https://img-blog.csdnimg.cn/20200102112153331.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(3)设置Members 权限,将普通开发者设置为developer,项目组长设置为master
![](https://img-blog.csdnimg.cn/20200103141741619.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
通过以上步骤的设置,所有人都不能直接push代码到私有云远程仓库
4、开发者开发流程(私有云工程为例)
(1)打开私有云工程的详情界面,点击fork按钮,fork出个人远程仓库
备注:后面分别称为私有云远程仓库和个人远程仓库和个人本地仓库
![](https://img-blog.csdnimg.cn/20200103141913737.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
这样就有了个人远程仓库:
![](https://img-blog.csdnimg.cn/20200103141950681.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(2)去个人本地仓库修改远程仓库地址最后结果如下:
![](https://img-blog.csdnimg.cn/20200102112305509.png)
(3)在本地修改代码,并提交到自己的本地远程仓库
![](https://img-blog.csdnimg.cn/20200102112314480.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20200102112328590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(4)gitlab上打开个人远程仓库,并发起merge request 请求
![](https://img-blog.csdnimg.cn/20200103142113451.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
选择仓库和分支
![](https://img-blog.csdnimg.cn/20200102112402689.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
填写merge request 信息 ,标题填写本次合并代码修改内容
描述中@需要code review的其他同事,assignee 中选择最终合并的代码的master
![](https://img-blog.csdnimg.cn/20200102112415826.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(5)你本人,其他同事都可以在私有云远程仓库看到这次merge request,其他同事可以针对你的代码提出问题
![](https://img-blog.csdnimg.cn/20200102112427428.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
或者没有疑问,添加已阅
![](https://img-blog.csdnimg.cn/20200102112441484.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(6)当有问题时,代码不能合并,你需要解决问题,并在gitlab上回复解决。
![](https://img-blog.csdnimg.cn/20200102112511343.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(7)所有问题都解决,并且同事都有阅读过。当前小组masters可以合并代码到私有云远程仓库
![](https://img-blog.csdnimg.cn/20200102112518315.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
5、developer和master 进行code review
(1)gitlab上看到merge request或者todos,然后点开进行codereview
![](https://img-blog.csdnimg.cn/20200102112531534.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(2)针对修改的代码提出问题,或者在discussion添加已阅
![](https://img-blog.csdnimg.cn/20200102112539909.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdvMTIzNA==,size_16,color_FFFFFF,t_70)
(3)大家都完成codereview后,master merge code