lawless-design/docs/00_项目概述/开发规范/规范-版本控制与分支策略.md
2026-07-09 14:39:17 +08:00

106 行
3.3 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 规范-版本控制与分支策略
> **位置**: `docs/开发规范/规范-版本控制与分支策略.md`
> **版本**: v1.0
> **日期**: 2026-07-08
> **关联**: AGENTS.md
---
## 1. Git 分支模型
```
main → 生产环境,永远可部署,禁止直接推送
└── develop → 开发集成,每日自动构建
├── feature/战斗系统重构 → 功能分支,完成后 PR 到 develop
├── feature/新增拍卖系统 → 功能分支
└── hotfix/修复充值漏洞 → 热修分支,从 main 切出
```
### 1.1 分支规则
| 分支 | 来源 | 合并目标 | 命名格式 |
|------|------|----------|----------|
| `main` | — | — | 保护分支 |
| `develop` | `main` | — | 保护分支 |
| `feature/xxx` | `develop` | `develop` | `feature/功能简述` |
| `hotfix/xxx` | `main` | `main` + `develop` | `hotfix/问题简述` |
| `release/vX.Y.Z` | `develop` | `main` + `develop` | `release/v版本号` |
### 1.2 强制规则
-**禁止直接向 `main` 推送代码**
- ✅ 所有合并必须通过 **Pull Request (PR)**
- ✅ PR 必须至少 **1 人审查通过** 才能合并
- ✅ PR 必须通过 **CI 检查**(编译 + 单元测试 + lint
- ✅ 合并前必须 **rebase 到目标分支最新**(避免 merge commit 污染历史)
---
## 2. Commit 规范(已在 AGENTS.md 定义,此处补充)
```
<type>(<scope>): <subject>
<body>
Fixes #123
```
### 2.1 Commit 类型
| 类型 | 用途 | 示例 |
|------|------|------|
| `feat` | 新增功能 | `feat(client): 新增闭关系统界面` |
| `fix` | 修复 bug | `fix(server): 修复能量恢复计算溢出` |
| `docs` | 文档修改 | `docs(GDD-02): 修正能量恢复系数` |
| `refactor` | 重构 | `refactor(client): 重构 GameManager 为单例模式` |
| `perf` | 性能优化 | `perf(server): 优化战斗结算并发` |
| `test` | 测试 | `test(client): 新增 EnergySystem 单元测试` |
| `chore` | 杂项 | `chore: 更新 docker-compose 配置` |
| `security` | 安全修复 | `security(server): 修复 SQL 注入漏洞` |
### 2.2 Commit 正文要求
- 说明「为什么」做这次修改,而不仅是「做了什么」
- 如果修改影响外部行为,说明影响范围和迁移步骤
- 引用相关的决策编号(如 `同步 ✅158`
---
## 3. 代码审查清单
审查者必须在 PR 中确认:
```
□ 代码与 GDD/PRD 对齐
□ 无废弃术语(体力/经验值/破界等)
□ 决策引用格式正确(本地决策带前缀)
□ 无魔法数字(常量已提取并注释来源)
□ 新功能有对应测试
□ 无敏感信息硬编码
□ 数据库变更有 migration 脚本
□ 数据模型变更有迁移函数
```
---
## 4. 版本号规则
采用语义化版本 `v主.次.修订`
| 版本变化 | 触发条件 | 示例 |
|----------|----------|------|
| 主版本 +1 | 重大架构变更/不兼容协议修改 | v1 → v2 |
| 次版本 +1 | 新功能发布 | v1.2 → v1.3 |
| 修订 +1 | Bug 修复/热更 | v1.2.3 → v1.2.4 |
- 版本号在 `package.json`client`server/main.go`server中同步
- 每次发版必须打 git tag`git tag -a v1.2.3 -m "版本说明"`
---
## 5. 版本记录
- **v1.0**2026-07-08: 初始版本,覆盖分支模型、commit 规范、审查清单、版本号规则