热门标签 | 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进行评审







推荐阅读
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 解决Win7中BAT文件无法设置管理员权限的问题
    本文介绍了一种通过创建快捷方式并使用其高级属性中的“以管理员身份运行”选项来解决Windows 7系统下BAT文件无法直接设置为管理员权限的方法。 ... [详细]
  • 深入理解Git与GitHub:分支管理与冲突解决
    本文详细探讨了Git中的分支管理技术,包括如何创建、切换和合并分支,以及如何有效解决分支合并时可能遇到的冲突。同时,文章还介绍了Git的基本原理,如哈希算法的应用和文件管理机制。 ... [详细]
  • Flask中路由的基础定义与应用
    本文介绍了如何在Flask框架中通过装饰器为视图函数指定访问路径,并详细讲解了带参数路由及指定请求方法的实现方式。 ... [详细]
  • 本文探讨了Web API 2中特性的路由机制,特别是如何利用它来构建RESTful风格的URI。文章不仅介绍了基本的特性路由使用方法,还详细说明了如何通过特性路由进行API版本控制、HTTP方法的指定、路由前缀的应用以及路由约束的设置。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 本文详细介绍了如何将After Effects中的动画相机数据导入到Vizrt系统中,提供了一种有效的解决方案,适用于需要在广播级图形制作中使用AE动画的专业人士。 ... [详细]
  • 本文基于《Core Java Volume 2》的内容,深入探讨了网络编程中通过POST方法提交表单数据的技术细节,包括GET与POST方法的区别、POST提交的具体步骤及常见问题处理。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
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社区 版权所有