本文是《技术管理者---提升研发代码质量》系列文章第三篇,第一篇整体介绍请看博文《技术管理者---提升研发代码质量---总体方法论》,第二篇整体介绍请看博文《技术管理者---提升研发代码质量---代码检查工具Sonar》。本文重点讲两部分内容:1)GitLab MergeRequest介绍;2)研发体系流程中如何强制使用MergeRequest。
GitLab MergeRequest介绍
现在越来越多的企业选择自建代码私服GitLab,用于托管本企业的产品代码。依附GitLab平台,做Code Review有两种方式,一种方式是使用外部同步系统Gerrit,第二种方式是使用GitLab自带的Merge Request功能(当然还有其他的Code Review方式,博主就不介绍了)。 下面大致分析一下两者的差异
结合第二篇博文中介绍的Gerrit使用的代价稍大一些,故博主所在公司使用GitLab自带的Merge Request方式做Code Review。
同理,要想让Code Review发挥作用,并且是持续的发挥作用,就必须将Code Review这一过程作为公司研发流程中必须经历的一个环节,这样才能保证Code Review持续的发挥作用。下面博主介绍GitLab的Merge Request与研发流程整合方法:
最重要的一环,Review管理员做MergeRequest的过程就是Code Review的过程,就这需要研发体系根据企业自身的研发规范与业务特征,不断沉淀出MergeRequest检查项Item(博主将在后期单独以一篇博文的形式介绍研发规范)。
研发体系流程中如何强制使用MergeRequest(配置、提交过程详解)
- 创建GitLab账号打通Idea(建开发人员账号)
由管理员在GitLab中创建账号:刘青/LiuQin/[email protected]/qwer1234,此过程较简单。
- 创建开发人员SSH秘钥上传GitLab
在刘青机器所在客户端创建SSH秘钥:任意位置右键菜单,选择“Git Bash Here”
输入如下内容(注意最后要回车三次):
$ git config --global user.name "LiuQin"
$ git config --global user.email "[email protected]"
$ ssh-****** -t rsa -C "[email protected]"
到如上所在目录,拿到id_rsa的内容,上传到GitLab对应账号当中:
- Idea依据远程Dev分支,创建本地Dev分支(依据“研发体系怎么使用GitLab 的MergeRequest(简图)”逐个展开详解)
开发下载指定protected分支代码,并创建本地个人分支LiuQin_dev_20180820做开发(注意这里必须将代码提交的目标分支设置为protected,只有管理员才能做Merge操作,不允许直接push到此分支)
- Idea依据本地Dev分支,创建个人Dev分支
- Idea在个人Dev分支开发代码,然后做Commit代码
- Idea中Checkout到Dev分支,Pull最新Dev分支代码
- Idea中Checkout到个人Dev分支,做本地代码Merge(原Dev-->目的个人Dev)
- Idea中解决冲突,将个人Dev再次提交并Push到远程服务器
- 开发登入GitLab,看到自己分支发起MergeRequest请求
- Review管理员登入GitLab处理此MergeRequest做代码审核工作
审核通过代码入库(删除开发个人分支),审核不通过直接关闭此MergeRequest
如果管理员处理MergeRequest做code view的时候,发现待合并的有冲突了,会出现如下的情况(需要尽量避免这种情况,因为GitLab页面做代码Merge很不方便),需要处理好冲突 再通过。
通过点击上面的“Resolve conflicts”就可以处理冲突,然后再返回做code view,处理Merge Request即可。
这样就可以将Code Review(用GitLab的Merge Request功能实现)作为研发流程必须经历的一个环节发挥作用啦,祝各位读者所在研发的研发质量越来越高。欢迎通过评论方式做讨论。