# 05-代码管理规范 ## 1. 代码仓库设置 ### 管理工具 - **【强制 C1】** 必须使用 Git 管理代码 ### 命名规范 - **【强制 C1】** 名称仅使用英文字母、数字、中划线(`-`);首字符仅为字母 - **【强制】** 禁止使用下划线 `_` 和特殊字符 - **【强制 C1】** 项目内全部仓库命名规则必须一致(全驼峰/全大写/全小写选一种) ### 必要文件 - **【强制 C1】** 每个项目必须有 `README.md`(包含工程介绍、结构说明、文档地址) - **【强制 C1】** 除文档仓库外,必须有 `.gitignore` ### 仓库划分 - **【强制 C1】** 核心代码和非核心代码分库管理 - **【强制 C1】** 每个仓库仅使用一种技术栈 - **【推荐 C0】** 每个仓库不超过 5 个微服务 ### 仓库大小 - **【强制 C1】** 每个仓库不超过 1GB ### 权限设置 - **【强制 C1】** 遵循权限最小化原则 - **【强制 C1】** 仅项目负责人/管理员可创建仓库 - **【强制 C1】** 离职/离开团队必须收回权限 - **【强制 C1】** 仓库管理员不超过 3 人 - **【强制 C1】** 禁止外协开发人员设为仓库管理员 - **【推荐 C0】** 严格控制 master/develop 分支写权限 --- ## 2. 分支设置 ### 必要分支 - **【强制 C1】** 必须有主干分支(master) ### Git Flow 工作流(推荐 C0) | 分支类型 | 名称格式 | 说明 | |----------|----------|------| | 主干分支 | `master` | 对外稳定发布版本 | | 开发分支 | `develop` | 包含全部最新特性 | | 紧急修复 | `hotfix-*` | 以 master TAG 为基础修复 | | 集成测试 | `release-*` | 以 develop 为基础,验收后合入 master | | 功能分支 | `feature-*` | 以 develop 为基础,完成后删除 | ### 代码评审 - **【强制 C3】** 所有提交必须经过代码评审 - **两种模式**:单分支 code review 或多分支 merge request --- ## 3. 开发人员操作规范 ### 用户信息设置 - **【强制 C1】** 须与远端仓库账号、邮箱一致 - "【强制 C1】** 密码不少于 8 位,包含数字、大小写字母及特殊符号 ### Commit 规范 - **【强制 C1】** 保持清晰的 commit 历史 - **【强制 C1】** 推送前合并精简 commit(一个任务不超过 5 个 commit) ### Commit Message 格式(C3) ``` type(scope): subject %workItemId ``` | type | 含义 | |------|------| | `feat` | 新功能 | | `fix` | 修复 bug | | `docs` | 文档变更 | | `style` | 代码格式 | | `refactor` | 重构 | | `perf` | 性能优化 | | `test` | 增加测试 | | `build` | 构建工具变更 | | `revert` | 撤销提交 | | `chore` | 辅助工具变动 | 示例:`%1011 fix(core): set a to b` ### 代码文件约束(C0) - **【强制】** 不允许提交含数据库账号、密码等敏感信息的文件 - **【强制】** 不允许提交与项目无关的二进制文件 - **【强制】** 单个文件不超过 10MB - **【强制】** 第三方依赖包必须引用制品库,不得直接放入仓库 - **【强制】** 不允许提交 pdf/doc/ppt/xls/压缩包/音视频等文件 --- ## 4. 代码版本管理 ### 版本号 - **【强制 C1】** 发布版本必须打 tag - **【强制 C2】** 版本号格式:`X.Y.Z`(主版本.次版本.修订号) - 主版本号:不兼容的 API 修改 - 次版本号:向下兼容的功能新增 - 修订号:向下兼容的问题修正 - **【强制 C1】** 制品版本号与代码版本号一致 ### 版本信息 - **【强制 C3】** Tag Message 记录版本日期、说明 - **【强制 C3】** Release Notes 记录 feature、fixed、关联任务