当下对于代码的管理,主要采用GitLab或GitHub,然而使用git进行代码管理过程中,一般有四种开发模式,分别为主干开发主干发布,主干开发分支发布,分支开发主干发布,分支开发分支发布。四种开发模式各有特色,下面将从针对四种开发模式进行一一说明。

但是针对微服务体系下,代码的管理,一般建议采用分支开发主干发布。

1. 代码管理模式

1.1. 主干开发+主干发布模式

模式特点:所有的操作都在主干上进行操作,随着时间的演进,代码只有一个版本,任何修改,均体现在主干上面,开发过程比较简单。

操作权限:该种模式对于开发人员与项目经理等在代码提交方面,权限相同;

适用场景:该种模式适用于团队规模较小,业务模型明确,且人员技能较高的开发团队。

1.2. 主干开发+分支发布模式

模式特点:所有的操作都在主干上进行操作,随着时间的演进,代码具有多个版本,运行多个版本可并行提供服务。

操作权限:该种模式对于开发人员与项目经理等在代码提交方面,权限相同;

适用场景:该种模式适用于多版本并存,但只维护一个版本的产品,其他版本不进行维护的项目,该种场景较少。

1.3. 分支开发+主干发布模式

模式特点:所有的代码提交都在分支上操作,随着时间的演进,需要构建Release版本时,需要将代码提交到主干上面,平常开发都是在分支上进行,好处可保证主干代码始终可用。

操作权限:该种方式开发人员只具有开发分支权限,无master权限,代码的merge只能由项目经理或有权人完成;

适用场景:该种模式适用于多功能并行开发,按照业务特性或模块进行在分支进行开发,然后在进行合并后进行Release构建发布,业务场景较复杂,且人员素质层次不齐,需要代码review。

1.4. 分支开发+分支发布模式

模式特点:所有的代码提交都在分支上操作,随着时间的演进,需要构建Release版本时,也是直接在分支上进行构建,各分支独立演进,与主分支关系不大,是主干开发主干发布的一个组合使用。

操作权限:该种方式开发人员与项目经理一样,只具有分支上的操作权限,不具有master权限。

适用场景:该模式适用于需求群/项目群的方式进行开发,大家公用同一个代码库,然后共享部门基础代码,然后各分支独立进行演进。

2. 代码管理规范

无规矩不成方圆,微服务架构下,代码的管理一般采用git进行管控,因此,在使用git进行版本控制时,应遵循一些原则及规范。

2.1. 代码管理原则

代码管理的原则,用于确保代码管理过程中不出现原则性错误,出现原则性错误,则会出现许多无用的操作,基本原则如下:

  • 模式确实后,必须严格遵循执行;
  • 提交代码时,禁止代码强制提交;
  • 代码提交时,必须进行注释说明;
  • 代码提交时,必须按照规范执行;
  • 出现冲突时,必须进行确认处理;

2.2. 代码管理规范

由于微服务一般建议采用分支开发主干发布,因此,本规范主要针对分支开发主干发布模式,具体规范如下:

  • 原则上代码的开发提交,必须通过创建分支进行开发,特殊情况除外(bug),review同事有责任进行检查其他同事是否遵循分支规范;
  • 代码提交前,必须先进行更新代码(git pull),对于有冲突的文件,必须要进行对比,确认素有修改都是自己修改的,然后在进行提交,防止代码回溯(即别人的代码被覆盖);
  • review同事遇到代码删除情况,必须与开发确认,是否为开发同事自己删除,如果不是,很可能就是代码回溯;
  • 在代码开发阶段,代码的提交尽量独立化,也就是功能模块尽量细分,每个开发负责一个模块,尽量不要修改其他成员模块代码;
  • 多人协作时,需要创建一个远程分支,然后一起在远程分支里协作开发,防止代码回溯。禁止各自开发,然后线下发送文件合并;
  • 代码提交前,必须进行git pull,且进行git diff进行比对代码,确保提交代码为自己修改内容,防止出现代码回溯;
  • 代码出现冲突时,必须 要与冲突代码提交者进行确认冲突内容,双方确认无误方可处理;
  • 主分支(master)为生产环境分支,除特殊情况(修复bug),禁止在master分支上进行开发;
  • 代码提交时,必须描述清楚做了什么,提交动作有add、update、remove,提交格式为[动作]+[操作的模块信息,尽量详细到具体的类名方法名]+[操作描述信息],例如:git commit –m ‘update aa.java findByName 将精确查询修改为模糊查询’,每次提交尽量一个动作,多个动作请多次提交;
  • 在git中,默认空目录不会提交,如果某个空目录想提交到版本库,需要在该目录下新建一个deleteme.txt的空白文件;
  • 开发分支(developer)为开发分支,一般作为主要的代码提交分支;
  • 修复分支为修复bug分支,命名格式为bugfix-{date},修复分支用于主要分支的bug修复工作;
  • 功能分支为新增功能分支,命名格式为feature-{message},可合并到developer分支;
  • 其他分支,为特殊情况建立的分支,命名应带有分支相关信息;

代码管理规范_微服务架构下代码管理规范相关推荐

  1. 设置失败重新发起_微服务架构下请求调用失败了怎么办!

    微服务架构相比单体架构,服务的调用从同一台机器内部的本地调用变成了不同机器之间的远程方法调用,但是这个过程也引入了两个不确定的因素: - 调用的执行是在服务提供者一端,即使服务消费者本身是正常的,服务 ...

  2. 微服务跨数据库联合查询_微服务架构下,解决数据库跨库查询的一些思路

    加关注,不迷路! 前言 在服务做微服务改造后,原先单库join查询已经不能满足要求,每个拆分的微服务对应一个数据库实例,而且部署在不同的服务器上,那么解决"跨库查询"就势在必行了. ...

  3. svn如何取消某个文件的版本管理_微服务架构如何统一管理工程配置文件

    面临的问题 在分布式微服务架构系统中,业务和系统功能被拆分成了几十甚至上百个服务实例.每个服务实例就是以往单体应用时代的一个独立部署的工程.每个工程都需要自己独立的启动加载和运行时配置文件. 在项目开 ...

  4. mysql 排名_微服务架构下,如何利用Mysql的limit配合orderby进行排名统计

    欢迎关注我的头条号:Wooola,10年Java软件开发及架构设计经验,专注于Java.Golang.微服务架构,致力于每天分享原创文章.快乐编码和开源技术. 前言 我们常用Mysql数据库的limi ...

  5. mysql微服务查询问题_微服务架构下,Mysql读写分离后,数据库CPU飙升卡壳问题解析...

    前言 最近系统(基于SpringCloud+K8s)上线,运维团队早上8点左右在群里反馈,系统登录无反应!我的第一反应是Mysql数据库扛不住了. 排查问题也是一波三折,有网络问题,也有mysql读写 ...

  6. 一行代码,保障分布式事务一致性—GTS:微服务架构下分布式事务解决方案

    摘要: 虽然微服务现在如火如荼,但对其实践其实仍处于初级阶段.即使互联网巨头的实践也大多是试验层面,鲜有核心业务系统微服务化的案例.GTS是目前业界第一款,也是唯一的一款通用的解决微服务分布式事务问题 ...

  7. 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...

    今天准备谈下微服务架构下各个微服务间如何解耦,以及对于已经紧耦合的微服务如何进行重构.要明白实际上微服务后续出现的诸多问题往往都是一开始微服务模块划分就不合理导致,对于具体的模块划分方法和原则,我总结 ...

  8. 分布式 java 应用:基础与实践_单集群数据超1000亿,微服务架构下分布式数据库应用实践...

    如今,大型企业的应用平台正在向微服务架构进行转型.在微服务架构下,应用程序和数据库等底层平台的关系将会被重构. 作为新一代分布式数据库,其架构与功能特性需要保证在与传统数据库全兼容的基础上,拥抱微服务 ...

  9. 用友云微服务架构下配置文件管理利器:配置中心

    微服务架构是这几年IT领域的一个高频词汇,越来越多的项目和应用正在以微服务的思想进行重构.相比于单体应用和SOA架构,微服务优势也逐渐凸显,被广大架构师和技术人员引入和推崇.当然,单体应用.SOA.微 ...

最新文章

  1. java编程三月有几天_3月有多少天
  2. gentoo rt-thread scons --menuconfig libs/lxdialog/util.o: undefined reference to symbol 'nodelay'
  3. 零基础自学编程前需要知道的知识
  4. PHP在线定制商城网站源码V3.0
  5. 快手直播伴侣因计算机丢失,在电脑上安装快手直播伴侣,却说因为计算机丢失MSVCP140.DOLL怎么办???...
  6. 让博客园博客自动生成章节目录索引
  7. python爬虫记一次cookie翻车
  8. 微信公众平台数据统计功能的作用是什么?
  9. realme支持鸿蒙系统,骁龙888+首批搭载安卓12,realme真我GT真香售价2499元起
  10. Python工作好找吗?没有工作经验和学历怎么找?【就业必看】
  11. 富文本编辑器Ueditor实战(二)-图片上传
  12. android阿拉伯数字1 to一,英文数字的阿拉伯数字android
  13. js 人民币小写金额转换为大写
  14. 【笔记】在 Windows 中制作 Ubuntu 系统的USB启动盘
  15. ldpc译码讲解_LDPC码及其译码实现
  16. 通过微透镜阵列的传播
  17. 【每日一读】A Hyperbolic Embedding Method for Weighted Networks
  18. 观察DNF的伤害计算公式
  19. linux top VIRT RES SHR SWAP DATA内存参数详解
  20. SEI、Envestnet、AssetMark2019年度观察 ——美国TAMP行业代表性公司对比分析

热门文章

  1. java对于文件传输时---编码格式的一些设置方法
  2. Linux学习记录--文件压缩
  3. as3.0 删除子元件
  4. JavaScript事件监听
  5. Spring Boot整合模板引擎jsp
  6. 浅析python 中__name__ = '__main__' 的作用
  7. 记忆碎片 - 2015.09.11
  8. nagios 邮件告警
  9. 创建私有CA详细图解
  10. VINS(八)初始化