热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DevOps微课|如何用Gerrit进行评审

点击上方“中兴开发者社区”,关注我们每天读一篇一线开发者原创好文DevOps微课系列旨在帮助用户学习DevOps实践。1概述    本文详细介绍一般开发人员使用Gerrit代码评审





点击上方“中兴开发者社区”,关注我们


每天读一篇一线开发者原创好文


DevOps微课|如何用Gerrit进行评审


DevOps微课系列旨在帮助用户学习DevOps实践。




1 概述


      本文详细介绍一般开发人员使用Gerrit代码评审系统基础设置和操作:包括获取代码,编辑并提交代码、添加评审员,进行代码评审、根据评审意见进行修改并再次提交,更正其他开发者提交的代码,如何解决合入冲突




2 Gerrit评审流程操作指南


  评审流程图(正常流程&待修订)


DevOps微课|如何用Gerrit进行评审2.1 使用DevOps微课|如何用Gerrit进行评审检出代码


   作用:clone 时同时下载commit-msg hook,hook的作用是在commit的时候生成change-ID(评审单的ID)


2.2 新建分支修改代码


 例子:基于master分支拉出bug分支修改ec61100123456,然后提交评审


  git checkout -b bugfix/ec61100123456 -t origin/master


  修改,add,commit——注意每次commit都会生成一个change-ID,即一个评审




2.3 提交评审 


git push origin HEAD:refs/for/master


在提交评审的同时,设置评审人


git push origin HEAD:refs/for/master%r=zhao**@zte.com.cn,r=jiang**@zte.com.cn 


命令太长?可以使用别名保存常用的命令参数,如:


git config --global alias.rh "push origin HEAD:refs/for/master%r=zhao**@zte.com.cn,r=jiang**@zte.com.cn"


以后直接敲 git rh命令即实现相同操作。


 


!!注意



  • push到refs/for/master 而非master


  •  提交时会自动在gerrit服务器上生成一个评审单,push命令返回结果时会提示评审单路径



2.4 评审流程处理


2.4.1 评审入口


 My->Changes 里选择评审单


2.4.2 评审界面和流程规则


主界面1:关注1、commit的相关内容;2、change ID; 3、change status,其中Needs Workflow是评审单的状态(change状态含义说明);


DevOps微课|如何用Gerrit进行评审


主界面2:评审文件清单,点击文件查看详细差异



DevOps微课|如何用Gerrit进行评审


点击某个文件,可打开差异界面浏览差异,在该界面可以:


DevOps微课|如何用Gerrit进行评审



  • 添加文件级comment


  •  选取某行/段 ,添加comment


  • 选择不同的patch,比较代码差异(base表示基础代码,开发者每修订一次代码,重新提交评审都会生成一个新的patch。)


  • 在线编辑文件



DevOps微课|如何用Gerrit进行评审


主界面3:评审操作界面,Add…添加评审人,Reply...回复评审意见,Post发布评审意见,打分情况显示在最下方


DevOps微课|如何用Gerrit进行评审


DevOps微课|如何用Gerrit进行评审


Gerrit评审步骤和通过标准:



  •  Gerrit评审有3个步骤:Code-Review(检查代码)、Verified(验证)、Workflow(工作流),3个步骤没有先后依赖关系,但是必须3个全部走完且通过代码才可以正式提交;


  • 评审流程通过必须同时满足:



a. Code-Review 有+2。(多人+1不等同于+2,-2优先级大于+2,且流程打回)


b. Verfied 有+2   (多人+1不等同于+2,-2优先级大于+2,且流程打回。这步可以为CI系统验证,CI运行完毕后由CI账号自动反馈结果并打分,如下图为CI验证通过+2:)


c. Workflow +1  (一般由core组成员控制,用途为在整体流程上控制评审)


  • 当每个步骤字体变为绿色时即表示该步骤已经通过,如果为红色代表该步骤不通过。


DevOps微课|如何用Gerrit进行评审


DevOps微课|如何用Gerrit进行评审


主界面4:评审操作历史,单击某个历史可以查看详细情况


DevOps微课|如何用Gerrit进行评审


2.4.3 评审不通过,修订commit重新提交patch,进行评审


!!提醒:注意要使用commit --amend功能来修订你的提交,而非新增一个commit,新增commit会新生成一个评审单


git commit --amend   


git push origin HEAD:refs/for/master 


 


♥   重新提交时有冲突?(使用rebase把分支重定位到目标分支最新,然后重新提交评审)


git checkout master


git pull origin master


git checkout bugfix/ec61100123456


git rebase -i master


git push origin HEAD:refs/for/master 




2.4.4 评审过程通过,提交代码 


整个评审流程通过(此时评审单状态为Ready to Submit),在评审操作界面会出现按钮,点击该按钮提交代码到正式的目标分支。几点注意:



  •  前提是该成员拥有submit权限,有些项目的策略是代码修改成员并没有submit权限,由proj-core人员来进行submit


  • 也可以通过abandon 放弃评审


  •  可以通过cherry pick 合并到其它目标分支



DevOps微课|如何用Gerrit进行评审







推荐阅读
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 持续集成概述与实践指南
    本文探讨了持续集成(CI)的基本概念、目的及其在现代软件开发中的应用。通过实例分析,帮助读者理解如何有效实施持续集成,提高软件开发效率。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • 12月16日JavaScript变量、函数、流程、循环等***线上九期班
    12月16日JavaScript变量、函数、流程、循环等***线上九期班 ... [详细]
author-avatar
seaknkoo_776
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有