源代码提交SOP(Git版)

一、原则

1、在维护公共基类、工具类和二方库等可能影响到其他团队成员的代码之前,必须同其他团队成员讨论,达成共识后方可进行维护。

2、严格遵守源码签入规范,有助于发现代码漏洞,降低代码合并风险,降低远程仓库代码的出错概率,请务必细心、审慎,不要因为时间紧就跳过流程步骤。在保证质量的前提下,进度才有意义。

二、六步提交法

1、开始编码前,从远程仓库pull最近成功构建的代码(有助于减少代码合并冲突)。

2、编写功能代码和对应的单元测试(若无特殊情况工具类和二方库必写单元测试,业务代码可自行判断)。

3、本地构建

1)编译代码、执行本次commit对应的单元测试、运行代码,确保单元测试通过,程序运行正常,功能满足需求;

2)检查代码是否符合编码规范(建议使用静态代码检查工具自动检查);

3)执行commit预操作,逐行比对每个改动点,检查代码逻辑是否符合编码意图,注释是否遗漏;

4)填写commit信息,注意写明分支名称,本次提交关联的任务或者Bug编号;若有多个内容,应分点说明。建议完成独立的任务或者修复Bug就commit,尽量避免一个任务多次commit或者一次commit中包含多个任务。

提交信息样例1:

develop_3.0:1、[TASK QZA-339]Tyson WS Clinet 接入;2、jserver-parent增加ws client依赖包;

提交信息样例2:

master:1、[BUG QZA-433]足球-重要Tab增加本地缓存;

5)确认commit;

4、二次构建

1)从远程仓库pull最新代码到本地;若没有代码更新,可跳过步骤4;

2)若出现冲突,需谨慎合并代码;若不理解冲突代码,可叫上代码作者一起合并;

3)编译代码、执行本次commit对应的单元测试、运行代码,确保单元测试通过,程序运行正常,功能满足需求;

4)再次commit,比对改动点,填写commit信息;

5、push代码。

6、提交代码自动化构建(若有)

1)自动化工具监听代码提交,自动构建代码,执行单元测试,若构建失败或者单元测试执行失败,发消息通知团队;

2)依据“立即暂停原则”团队收到失败通知后,暂停新代码push,也不允许pull代码,直到接收到构建成功通知;问题代码作者需立即解决问题,重新提交。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下使用pidcat找bug

第一步: 安装pidcat 第二步: 找到APP的包名比如adb shell ps | grep sangforadb shell pm list package第三步: 在ubuntu终端输入pidcat.py 包名结果:

创建与删除索引

索引是加速查询的主要手段,特别对于涉及多个表的查询更是如此。本节中,将介绍索引的作用、特点,以及创建和删除索引的语法。13.4.1 使用索引优化查询索引是高速定位数据的技术,首先通过一个演示样例来了解其含义及作用&#xff0…

r vector 4 elements_Vector类与Enumeration接口

Vector类用于保存一组对象,由于java不支持动态数组,Vector可以用于实现跟动态数组差不多的功能。如果要将一组对象存放在某种数据结构中,但是不能确定对象的个数时,Vector是一个不错的选择。例:将键盘上输入的一个数字…

JFinal 1.5 发布,JAVA极速WEB+ORM框架

JFinal 爱好者一直都在问 JFinal 何时再次升级?JFinal 1.5 何时发布?以往升级都保持在每月近两次的频率,为何本次五个月过去了新版本还不出?由于作者暂时阔别码坛已有半年时间,一直无暇顾及,现趁此国庆假期…

[深入JUnit] 测试运行的入口

阅读前提 了解JUnit 对JUnit的内部实现有兴趣 不妨看看[深入JUnit] Before, After, Test的秘密] 代码版本: junit 4.12代码搜索工具: http://grepcode.com/常用符号 _: 用来略去代码段中无关紧要的parameter ...: 用来略去无关紧要的代码实现 本文的展开方式&…

.NET6之MiniAPI(七):中间件

http协议,是由客户端发出请求,服务端响应结果并返回,我们把这个请求来回抽象成一个请求管道,那中间件就是这个管道上的阀门,控制着流量的进出和中断。每一个请求都要经过中间件的过滤,滤掉不合格的请求&…

linux之telnet命令使用

telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序&…

arraylist从大到小排序_经典排序方法的python实现和复杂度分析

1.冒泡排序:冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步…

AfxMessageBox和MessageBox差别

假设用MFC的话,请尽量使用afxmessagebox,由于这个全局的对话框最安全,也最方便。 可是在WIN32 SDK的情况下仅仅能使用MESSAGEBOX。 MessageBox()是Win32API函数.后者是mfc中的全局函数.在MFC中能用MessageBox()的地方都能用AfxM…

[单刷 APUE 系列] 第十四章——高级 I/O

非阻塞I/O 在最前面,我们讲过IO分成带缓冲的IO和不带缓冲的IO,但是实际上,这个区别并不是很大,因为缓冲区并没有影响到实际的读写。我们知道,系统调用实际上分成两种,高速的系统调用和低速的系统调用&#…

正则表达式的简单应用

1. 正则表达式(1) 什么是正则表达式?正则表达式是一种功能强大而灵活的文本处理工具。(2) 正则表达式的主要作用正则表达式主要用于:验证字符串,即检验输入的字符串是否符合给定的模式。例如,验证输入的电话号码、手机号码、号码等…

Prism区域异常问题分析(导航失效?)

前文本篇文章主要讨论在WPF当中使用Prism区域导航的失效的问题, 在其它的博客当中也出现了多次讨论这个问题以及对应的解决方法,例如重写OnInitialized方法等等。我认为这都不是解决问题的根源, 既然如此, 下面我们将来分析Prism的IRegionManager的具体流程。Prism初始化过程首…

HOOK学习笔记与心得

一、 Hook介绍钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理wind…

使用SQLServer2005插入一条数据时返回当前插入数据的ID

使用SQLServer2005插入一条数据时返回当前插入数据的ID在执行完插入后 再执行 select identity from users 就OK 就是刚才插入的那行的 ID了 补充: identity 表示当前新增的主键ID这个是在一个session中查找的,SELECT MAX(id) FROM Users 执行这个查询,就…

access函数_ACCESS中的DLookUp函数是如何运算的?

​一、DLookUp函数介绍1. DLookUp函数的用途:可以用于从指定集合(一个域)中获取符合条件的特定字段的值。2. DLookUp函数的格式为:DLookUp( expr , domain , [criteria] )其中:expr 为字段名,或以字段名为基础的表达式字符串domai…

atitit。wondows 右键菜单的管理与位置存储

atitit。wondows 右键菜单的管理与位置存储 原理 。这样的功能称为Windows外壳扩展(Shell Extensions) 1 常用右键菜单 atiContentMenu1 通用tool1 文件夹的右键菜单位置3 所有的文件的右键菜单位置3 右键菜文件夹模式3 原理 。这样的功能称为Windows外壳扩展(Shell Extensions…

汇编语言之基础知识

1、机器语言 说到汇编语言的产生,首先要讲一下机器语言。机器语言是机器指令的集合。什么是机器指令?我们在使用CE时,常常见到。 请看下图: 图中所示的就是机器指令(或称机器码),这是十六进制的…