代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情。如何借助现有工具在团队内部形成代码review的流程与规范,是team leader或技术管理者需要考虑的问题。本文分享一种基于Gitlab代码merge流程的code review方法,以供参考与探讨。如有更好的方法,欢迎交流。

1. 设置成员角色

首先需要对你团队的成员分配角色,在Gitlab groups里选择一个group,然后左边菜单栏点击 Members,可在 Members 页面添加或编辑成员角色,如下图所示。

其中角色包含如下几类:

  • Guest:权限最小,基本查看功能
  • Reporter:只能查看,不能push
  • Developer:能push,也能merge不受限制的分支
  • Master:除了项目的迁移、删除等管理权限没有,其它权限基本都有
  • Owner:权限最大,包括项目的迁移、删除等管理权限

详细权限参考: https://docs.gitlab.com/ee/user/permissions.html

确定团队中技术水平、经验较好的成员为Master,负责代码的review与分支的合并;其他成员为Developer,提交合并请求,接受review意见;Master之间可以互相review。

2. 配置分支保护

在项目页面左侧菜单栏 Settings -> Repository, 进入“Protected Branches”部分配置分支保护,如下图所示。

在这里可以针对每个分支,设置允许什么角色可以merge,允许什么角色可以push,选项包括三个:“Masters”, “Developers + Masters”, “No one”。这里设置成只允许master可以直接push与merge这几个常设分支的代码。(如果更严格一点,可以将“Allowed to push”设置成“No one”)

3. 代码review流程

3.1. 开发(开发者负责)

1、本地切到develop分支, 拉取最新代码(相关命令如下,GUI工具操作自行查相关文档)

git branch #查看当前位于哪个分支,前面打星号即为当前分支
git checkout develop   #切换到develop分支
git pull  #拉取最新代码

2、从develop分支切出子分支

git checkout -b feature-1101  #从当前分支切出子分支,命名为"feature-1101"

3、编码、本地自测完之后,提交子分支到远程仓库

git add *  #加入暂存区
git commit -m "commit msg" #提交到本地仓库
git push origin feature-1101 #提交到远程仓库

3.2 发起Merge请求(开发者负责)

1、在项目主页面,依次点击左侧“Merge Requests”(下图1),“New merge request”(下图2),打开新建Merge请求页面3.2 发起Merge请求(开发者负责)

2、在新建Merge请求页面,选择merge的源分支,及目标分支,如下图源分支为“feature-1101”,目标分支为“develop”,点击“Compare branches and continue”按钮进入对比与提交页面

3、在对比与提交页面,可以点击“Changes” tab查看本次修改(这里我为了演示,只是加了两个换行),确认无误,点击“Submit merge request”按钮,提交merge请求

4、提交之后,将结果页面的浏览器地址发到团队即时通讯群(如钉钉),并@相应的同事申请review

3.3 代码Review(code reviewer负责)

1、负责代码Review的同事收到申请后,点击merge请求地址,打开页面,查看“Changes”。这里可通过“Inline”单边查看,也可以通过“Side-by-side”两个版本对比查看

2、review完成后,若无问题,则可点击”Merge”按钮完成merge,同时可删除对应的子分支“feature-1101”;若有问题,则可点击“Close merge request”按钮关闭该merge请求(也可以不关闭复用该merge请求),同时通知开发者进行相应调整,重新提交代码发起merge请求(如果之前没关闭merge请求,则刷新即可看到调整)。

3.4 冲突解决(开发者负责)

1、merge的时候,可能存在代码冲突,这时,开发者可从develop分支重新拉取最新代码进行本地merge, 解决冲突后重新提交代码进行review

git pull origin develop #在当前子分支拉取develop分支的最新代码进行本地merge# 解决冲突代码# 提交
git add *
git commit -m "fix merge conflict"
git push origin feature-1101

2、自行解决不了时,寻求协助

4. 借助阿里钉钉机器人来改善体验

前面流程中提醒code reviewer是需要开发者自己来发消息通知的,可不可以把这个流程自动化。我们可以借助Gitlab的webhook与钉钉机器人来实现。

1、在钉钉群右上角点击“…”,打开群设置,群机器人中点击添加机器人,会显示可以添加的机器人类型,如下图所示

2、选择Gitlab,点击添加,输入机器人名称,如“Gitlab”,点击完成即创建了一个Gitlab的钉钉机器人。回到“群机器人”窗口,将能看到刚刚创建的Gitlab机器人,如图

点击齿轮按钮,进入设置页,可看到webhook地址,点击复制,复制该机器人的webhook地址。如图
          

3、在Gitlab项目主页进入 Settings -> Integrations, 将前面复制的webhook地址填入URL中,Trigger 部分选择“Merge request events”(不要勾太多,不然提醒太多就有点骚扰了),然后点击“Add webhook”就完成了。如图

4、当有开发人员提交merge请求时,钉钉机器人将在钉钉群里发出通知,code reviewer点击消息里的链接即可进入页面进行code review, review完成,将分支merge之后,钉钉机器人也会发出消息(所有merge相关的事件都会发出消息)。如图

5. 总结

团队协作,流程、规范很重要,不同的团队可能有不同的适用流程与规范。此文分享了基于Gitlab与阿里钉钉群机器人的代码review流程,希望对团队研发协作有一定参考价值,也欢迎一起探讨、交流。

研发团队如何借助Gitlab来做代码review相关推荐

  1. 用Gitlab进行强制代码Review

    代码Review,是被主流IT行业普遍认同的,提高代码质量的有效途径之一.但有些团队在执行的时候,由于人员的惯性等问题,造成不是100%Review.其实在Gitlab下,有一些手段可以进行强制Rev ...

  2. 新进入一个研发团队,或者项目组要做什么?

    进入一个新的团体,接手或者接触新的项目,我们最终的目的是什么?这个弄清楚了才好说如何去快速融入和达到最终目的. 以我而言,我都是按照允许去熟悉或者能够与这个团队或者项目一起合作的时间去判断:我就两个极 ...

  3. 手把手教学借助CI做代码格式审查、编译审查 | CI/CD搭建流程 — GitLab篇

    本文分享自中移OneOS微信公众号< CI/CD搭建流程 - GitLab篇>,作者 Kisann. 让GitLab CI/CD做什么 嵌入式软件开发领域高频使用的开发语言是C语言,在大型 ...

  4. 当研发团队来了不懂技术的领导

    原文地址:http://www.techug.com/post/when-leader-cannot-code.html 作者:StuQ 不懂技术的领导经常会出些乱子.就好像当小编的领导说:" ...

  5. Android产品研发(二十)--代码Review

    转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了如何在Android studio中进行单元测试.实际开发过程中有一些功能性的需求,比如测试工具类,测试数据存储等测试工作,如果还是通过重复执行a ...

  6. 如何有效地进行代码 Review?

    研发都知道代码 Review 的重要性,在腾讯代码 Review 也越来越受大家重视,作为腾讯专有云平台研发的一员,我参与了大量的代码 Review,明显地感受到有效的代码 Review 不但能提高代 ...

  7. 代码review的心得

    1.     WHY 代码review 是提高开发团队代码质量的一个非常好的技术手段,同时也是了解和培养新手程序员的一个非常好的方法,我个人的建议是所有的开发团队都应该努力推广代码review这一技术 ...

  8. 熟知代码review那些事

    什么是代码Review? 代码review是指在软件开发过程中,通过对源代码进行系统性检查来确认代码实现的质量保证机制,即是code review(CR) 为什么不做代码Review? ​业务需求大, ...

  9. 正视代码Review,养成良好的编程习惯

    什么是代码Review? 代码review是指在软件开发过程中,通过对源代码进行系统性检查来确认代码实现的质量保证机制 为什么不做代码Review? ​业务需求大,工作时间紧张 项目小,协作的人少,没 ...

最新文章

  1. 一个月入门Python爬虫,轻松爬取大规模数据
  2. oracle复制一个表的结构图,Oracle复制表结构
  3. 电信网络拓扑图自动布局
  4. 洛谷OJ - P1192 - 台阶问题(递推)
  5. 游戏开发 cocosBuilder cocosCreator cocosPods
  6. 明星的html模板,明星个人网页制作模板
  7. mysql 列连接_计数mysql中的连接列
  8. 人工智能数学基础3:部分数学符号以及自然数、整数、有理数和实数的势
  9. 2021年高级维修电工证考试题库,职业技能鉴定职业资格
  10. 【一篇文章告诉你网格策略从理论到实盘的所有内容(python实现)】
  11. 单片机教学打铃控制器C语言
  12. SOFA BOLT源码解析之设计要点-线程模型
  13. 如何使用powertoys全盘搜索文件
  14. iOS --- OpenGLES之图片纹理
  15. 后缀是dat的是什么文件 dat文件删除了能恢复吗
  16. AsyncQueryHandler 异步查询数据
  17. poj1737 Connected Graph(计数,组合数学,递推,高精)
  18. 2021年全球与中国先进的CT机行业市场规模及发展前景分析
  19. mac如何启用cpu虚拟化_如何查看自己的电脑 CPU 是否支持硬件虚拟化 - Binge-和时间做朋友...
  20. java学习之路:27.final变量,final方法,final类

热门文章

  1. Paragon Partition Manager 9.0 Professional管理磁盘分区
  2. 2022京东年货节全民炸年兽怎么玩 全民炸年兽玩法规则
  3. stream流的使用说明书
  4. excel报表导入失败问题记录
  5. Flash Socket 编程(1)
  6. RedHat Enterprise linux 4-6 下载连接汇总
  7. 华为畅玩5 android6.0,华为荣耀畅玩5的报价以及具体评测【图文】
  8. (mt6735)Android5.1横屏修改记录
  9. js方法 使url 转码编码
  10. ACREL-5000能耗监测及ACREL-2000电力监控系统的研究与应用