SVN提交规范
SVN提交规范
1. 目的
本规范用于统一项目组 SVN commit -m 提交说明的写法,降低以下问题:
- 提交标题过短,看不出改了什么
- 提交说明过散,无法快速定位变更原因
- 一次提交包含多个主题,后期难追踪、难回滚
- 线上问题回查时,看不到“为什么改、改了哪里、风险点在哪”
目标是让每一次提交都做到:
- 一眼看懂本次改动主题
- 能快速判断影响范围
- 能支持后期排查、追溯、回退、交接
2. 适用范围
适用于本项目所有代码、配置、脚本、文档相关的 SVN 提交。
包括但不限于:
- 后端 Java 代码
- 前端页面与脚本
- SQL、配置文件、脚本文件
- 接口文档、设计文档、测试文档
3. 总体原则
提交说明遵循以下原则:
3.1 一次提交只表达一个主题
推荐:
- 一个缺陷一个提交
- 一个重构主题一个提交
- 一个需求点一个提交
不推荐:
- 同一次提交既修 bug,又改样式,又调配置,又补文档
3.2 标题优先写“改动意图”,不要只写“改了什么”
推荐:
AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态日计划:修复树字段 follow-up 下人员未找到后续接错误
不推荐:
修改代码调整一下优化bug修复
3.3 描述应可追溯
提交说明至少应回答 3 个问题:
- 为什么改
- 改了哪一类逻辑
- 影响了哪些模块或链路
3.4 标题要让人“脱离上下文也能看懂”
查看提交历史时,阅读者往往不知道你当时在处理什么问题,所以标题不能依赖口头上下文。
4. 推荐格式
推荐统一使用“两段式”或“三段式”提交说明。
4.1 简版格式
适用于小改动、单点修复:
模块/主题:改动目的
示例:
AI填单:修复树字段人员选择翻页后候选丢失日计划:修复保存后未回显工作负责人问题网关:补充生产环境超时配置
4.2 标准格式
适用于常规开发提交,推荐优先使用:
模块/主题:改动目的
- 原因/背景- 主要改动- 影响范围
示例:
AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态
- 解决 pendingAction 同时承担协议信封与运行态快照导致的双写和易错问题- 将 resolvedSelections、候选快照、树 follow-up 运行态统一收敛到 EntitySelectionState- 影响通用下拉、树字段选择、AI follow-up prompt 上下文构建链路
4.3 完整格式
适用于重构、跨模块联动、大改动:
模块/主题:改动目的
- 背景:为什么要改- 改动:本次具体做了什么- 范围:影响哪些类/模块/接口- 风险:可能的风险点或兼容说明- 备注:测试说明/回退说明/关联问题单
示例:
AI填单:收敛树字段挂起状态,消除 resolvedSelections 双写
- 背景:pendingAction 职责过重,存在运行态与协议字段混存,导致读写来源不一致- 改动:pendingAction 保留 type/entity/stage/mode/keyword;运行态统一迁移至 EntitySelectionState- 范围:SpecialWorkersSelectionHandlerV2、GenericDropdownHandlerV2、AiPromptContextBuilderV2- 风险:涉及 follow-up 链路,需重点关注树字段继续追问、翻页、未找到后补充场景- 备注:本次未做整文件回填,保持原文件编码与 BOM 不变
5. 标题命名规则
推荐标题结构:
[模块/主题]: [动作] + [对象/目标]
常用动作词:
- 修复
- 收敛
- 拆分
- 重构
- 清理
- 补充
- 优化
- 统一
- 校正
- 兼容
- 下沉
- 抽取
常用标题模板:
模块:修复xxx问题模块:优化xxx逻辑模块:重构xxx链路模块:统一xxx状态模型模块:清理xxx冗余逻辑模块:补充xxx校验模块:拆分xxx职责
示例:
AI填单:统一树字段挂起状态读取来源AI填单:拆分 pendingAction 与 EntitySelectionState 职责日计划:修复人员字段回显与实际保存不一致问题巡检:补充设备查询为空时的兜底提示
6. 不同类型提交的写法建议
6.1 缺陷修复
模板:
模块:修复[现象/问题]
示例:
AI填单:修复树字段人员未找到后 follow-up 串链问题登录:修复 token 失效后页面未跳转登录页问题
建议补充:
- 问题出现条件
- 根因
- 修复点
6.2 重构优化
模板:
模块:重构/收敛/统一[对象]
示例:
AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态设备监测:统一查询参数封装方式
建议补充:
- 为什么重构
- 旧设计问题是什么
- 新结构如何划分
6.3 配置调整
模板:
模块:调整[环境/配置项]
示例:
网关:调整生产环境超时与重试配置Nacos:补充AI填单相关配置项
建议补充:
- 环境范围
- 生效对象
- 是否需要联动发布
6.4 文档提交
模板:
文档:新增/更新[主题]
示例:
文档:新增 SVN 提交规范文档:更新 TreePending 状态设计说明
6.5 测试/脚本提交
模板:
测试/脚本:补充/修复[目标]
示例:
测试:补充 AI 树字段 follow-up 场景清单脚本:修复部署脚本路径判断问题
7. 推荐与不推荐示例
7.1 推荐示例
示例一:单点 bug 修复
AI填单:修复树字段翻页后候选快照丢失
- 原因:翻页时候选来源依赖 pendingAction 快照,状态清理后数据不稳定- 改动:候选快照统一改为读取 EntitySelectionState- 影响:树字段人员/单位选择翻页链路
示例二:状态重构
AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态
- 原因:pendingAction 同时承担协议和运行态,存在双写、漏写、误清理风险- 改动:运行态迁移至 EntitySelectionState,pendingAction 收敛为协议信封- 影响:通用下拉、树字段选择、AI follow-up prompt 上下文
示例三:配置类改动
网关:补充AI接口超时配置
- 原因:AI 请求高峰期偶发超时- 改动:增加接口超时与重试配置- 影响:网关转发 AI 服务链路
7.2 不推荐示例
修改继续优化改一下bug提交代码最新版本功能完成测试一下
问题在于:
- 看不出模块
- 看不出问题
- 看不出改动范围
- 无法支持追溯
8. 提交粒度要求
8.1 允许的粒度
推荐一次提交只覆盖以下之一:
- 一个明确 bug
- 一个明确需求点
- 一个明确重构主题
- 一次独立配置调整
- 一份独立文档补充
8.2 不推荐的粒度
不建议把以下内容混在一起:
- bug 修复 + 样式调整
- 功能开发 + 大量格式化
- 重构 + 无关文档整理
- 配置变更 + 逻辑改造 + SQL 变更
如果确实必须一起提交,提交说明中必须明确列出多个子项。
9. 推荐提交前检查项
提交前建议自查:
- 本次提交是否只有一个主题
- 标题是否脱离上下文也能看懂
- 是否说明了“为什么改”
- 是否标明了影响范围
- 是否混入了无关文件
- 是否包含调试日志、临时代码、注释掉的大段废弃代码
- 是否确认文件编码/BOM 未被误改
- 是否避免了对老文件做整文件回填式覆盖
10. svn commit -m 推荐模板
10.1 简版模板
svn commit -m "模块:改动目的"
示例:
svn commit -m "AI填单:修复树字段人员未找到后续接错误"
10.2 标准模板
svn commit -m "模块:改动目的
- 原因:...
- 改动:...
- 影响:..."
示例:
svn commit -m "AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态
- 原因:pendingAction 同时承担协议和运行态,存在双写和误清理风险
- 改动:运行态统一迁移到 EntitySelectionState,pendingAction 保留协议信封字段
- 影响:通用下拉、树字段选择、AI follow-up prompt 上下文链路"
10.3 完整模板
svn commit -m "模块:改动目的
- 背景:...
- 改动:...
- 范围:...
- 风险:...
- 备注:..."
11. 本项目推荐风格
结合本项目当前开发内容,推荐默认采用以下风格:
标题格式
业务模块:改动目的
常见业务模块建议:
AI填单日计划周计划巡检设备监测网关认证文档
正文格式
- 原因
- 改动
- 影响
这是当前项目最容易执行、也最容易保持统一的形式。
12. 推荐落地要求
建议团队后续统一执行以下规则:
- 禁止使用“修改、优化、提交一下、最新版本”这类无意义标题
- 除极小改动外,统一使用至少 3 行说明:
原因 / 改动 / 影响 - 重构类提交必须明确写出旧问题和新边界
- 涉及多模块时,正文必须写影响范围
- 提交前必须检查是否误改文件编码、BOM、换行风格
13. 建议的团队示例库
后续可以在团队内部持续沉淀“优秀提交样例”,按类型归档:
- bug 修复类样例
- 重构优化类样例
- 配置变更类样例
- 文档类样例
- 联调/兼容类样例
建议每月复盘一次,把好的提交说明补充进来,逐步形成团队自己的提交语言风格。
14. 当前场景推荐提交文案
本次改动推荐使用:
标题
AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态
标准版
svn commit -m "AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态
- 原因:pendingAction 同时承担协议信封与运行态快照,存在双写、漏写、误清理风险
- 改动:通用下拉与树字段选择链路统一将运行态收敛到 EntitySelectionState,pendingAction 仅保留协议字段
- 影响:GenericDropdownHandlerV2、SpecialWorkersSelectionHandlerV2、AiPromptContextBuilderV2 follow-up 链路"
完整版
svn commit -m "AI填单:收敛选择挂起状态来源,拆分 pendingAction 与运行态
- 背景:选择挂起链路存在 pendingAction 与 EntitySelectionState 双状态并存,读写来源不一致
- 改动:resolvedSelections、候选快照、树 follow-up 运行态统一迁移到 EntitySelectionState;pendingAction 收敛为 type/entity/stage/mode/keyword 等协议字段
- 范围:GenericDropdownHandlerV2、SpecialWorkersSelectionHandlerV2、AiPromptContextBuilderV2、TreeDropdownFieldConfigV2
- 风险:重点关注树字段 follow-up、翻页、未找到后继续补充等场景
- 备注:本次未对老文件做整文件回填,保持原文件编码与 BOM 不变"