关于后端:开发规范系列三代码提交规范

47次阅读

共计 1973 个字符,预计需要花费 5 分钟才能阅读完成。

首发博客地址

系列文章地址


标准

  1. 切忌一次大量提交代码,每次 fix 或 feat 一个性能即须要提交到本地,能够不提交到近程
  2. 提交代码前必须先拉代码
  3. 个别状况下 不得强制提交
  4. 一个新性能拉取独自的分支开发,开发完后再合并到主分支上
  5. 禁止无意义阐明提交
  6. 通常须要每天上班前推送本地仓库到近程仓库中

一、背景

每次提交代码到 Git 仓库时,都须要写 commit message。通常状况下,commit message 应该清晰明了,阐明本次提交的目标和具体操作等。然而,在日常开发中,开发者们提交的 commit message 千差万别,中英文混用,导致后续代码保护老本很高,有时候甚至本人都不晓得修复的是什么问题。因而,为了解决这些问题,咱们心愿通过一种形式来监控用户的 git commit message,以进步代码标准,进步开发效率。

二、约定

咱们要求所有我的项目的 Commit Log 都遵循一个准确的格局,以减少可读性,便于查看变更历史,并养成良好的 git 应用习惯。咱们将这个标准作为 git hook 的 commit-msg 和 pre-receive 执行,不符合规范的 commit 无奈提交。全面执行后,能够主动执行以下操作:

  • 平台工具包能够间接依据 commit log 生成每次版本的 changelog。
  • 上线申请零碎能够主动附带本次上线的 commit log。
  • 要求每次提交都认真思考,放弃 commit log 的整洁性,每次 commit 都要具备部分完整性。

三、Commit Log Format

Commit Log 蕴含三个局部:header、body、footer。其中,header 是必须的,格局固定,body 在必要时用于具体解释变更。

commit log 格局如下:

<types>(<scopes>): <subject>

< 空行 >

<body>

< 空行 >

<footer>

留神:冒号前面必须有一个小写空格,types 和 scopes 能够是多个,两头用逗号分隔。

举例:

  1. 仅 header:
fix(service,dao): 批改产品类型时不过滤产品 Type

仅 header,波及模块较多用 * 代替
refactor(*): 批改 DTO 模型前缀

有 header 和 body
fix(language-service): Improve signature selection for pipes with args

Pipes with arguments like `slice:0` or `slice:0:1` should not produce

diagnostic errors.

有 header、body、footer
func(core,logic): 增加礼包审核

增加商品编辑审核状态和回调,blablablabla

PRD:https://km.sankuai.com/page/194127085

1、Type

英文,小写。必须是以下中的一个或多个:

  • func: function,小性能。留神:feat 改成 func 了,防止大家按 feature 这个大粒度来提交,冀望是按小性能点分批提交,另外防止跟 feature 分支标准混同。
  • fix: bug 修复,包含编码过程中的逻辑修复,不特指线上 bug 修复。
  • refactor: 重构代码,非 bug 修复和性能优化,包含编码过程中的代码结构调整,不特指重构我的项目。
  • impr: improvement,小的代码设计改良。
  • perf: 性能优化。
  • apm: 仅监控打点、异样日志解决相干。
  • chore: 无关紧要的改变,例如删除用不到的注解、调整日志内容等。
  • jvm: 仅 JVM 参数变更。
  • pom: 仅依赖和版本变动。
  • conf: 仅配置变动,Spring 配置、properties 文件。
  • docs: 仅文档变更。
  • style: 代码格局调整,如 import 清理,代码格式化。
  • test: 单测和自动化 case 相干。
  • typo: 修复小的拼写错误。
  • wip: work in progress,少用,用于开发中的不残缺提交,新工程开始时偶然应用。

2、Scope

英文,小写。示意变更的包或模块范畴,能够是多个组合,如果波及范畴较大,能够用 * 代替。各服务能够自行定义,组内同学能够轻易了解。通用 scope 列表如下:

  • dto: dto 构造变动。
  • core: core 包。
  • service: service 层代码。
  • dao: dao 层代码。
  • sql: sql 代码变更。

除了上述通用字段外,各方向能够自行定义关键字。例如,以下是商品平台中定义的字段:

  • price: 价格相干。
  • stock: 库存相干。
  • product: 商品相干。
  • idl: IDL 文件变动。

3、Subject

中文。简要形容批改,结尾不要有句号。

4、Body

中文。批改的背景(为什么做这次批改),阐明批改逻辑。

5、Footer

中文。能够搁置需要 wiki 或 task 链接,对当前其他同学查看很有用。

四、应用插件生成日志

装置该插件后,在提交页面会有一个按钮

本文由 mdnice 多平台公布

正文完
 0