Files
patbond-doc/docs/development/git-workflow.md
T
lixi 027876ae00 docs: 增加 Git 工作流规范
- 三仓分支模型(api/flutter 以 dev 为集成分支、doc 直接 main)、feature 分支时机
- 固化中文语义前缀提交约定:正文写验收证据、引用 ADR 编号
- 禁止事项:敏感配置/构建产物不入库、共享分支不 force push、已推送 Flyway 迁移不可变(呼应开发计划 4.3)
- 按仓库分列提交前本地门禁命令清单,作为未来 CI 门禁蓝本
- 门禁:mkdocs build --strict 通过(零 warning)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 10:36:34 +08:00

44 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Git 工作流规范
适用于三个仓库:`patbond-api`dev)、`patbond-flutter`dev)、`patbond-doc`main)。
## 分支模型
- **patbond-api / patbond-flutter**`dev` 为集成分支,保持随时可构建(门禁全绿)。日常改动小步直接提交到 `dev`
- **patbond-doc**:直接提交 `main`
- **何时开 feature 分支**:改动跨多天、有破坏性风险(如大规模重构、依赖升级)、或多人并行同一仓库时,从最新 `dev` 拉出 `feat/<主题>` / `fix/<主题>` 分支,完成后合回并删除分支。短命分支,不留长期分叉。
## 提交信息约定
格式:`<前缀>: <中文主题>`,前缀取 `feat` / `fix` / `refactor` / `docs` / `test` / `chore`
- 主题一句话说清做了什么;涉及架构决策时在主题或正文引用 ADR 编号(如 `ADR-005`)。
- 正文用列表写关键改动与**验收证据**(测试数量与结果、门禁命令输出结论),让提交自证可用。
- 一次提交做一件事,可独立回退;不把无关改动混进同一提交。
示例(既有惯例):
```text
feat: 迁移珊瑚橙主题体系并新增认证基础组件(ADR-005)
- 新增 BrandMark/AppTextField 等 5 个组件及 6 个 widget 测试
- 门禁:dart format0 changed/ flutter analyze0 issues/ flutter test7 passed
```
## 禁止事项
- **不提交敏感配置与构建产物**:本地 `application.yml``target/``build/``.dart_tool/``.idea/`、密钥凭据一律不入库(.gitignore 已覆盖,提交前 `git status` 逐一核对暂存清单)。配置只提交 `*.sample`
- **不 force push 共享分支**`dev` / `main`)。个人 feature 分支整理历史后如需强推,用 `git push --force-with-lease`
- **不修改已推送的 Flyway 迁移**(呼应开发计划 4.3 节):`V1__*.sql` 等已进入 `dev` 的版本化迁移视为不可变,schema 变更一律新增 `V<n+1>__*.sql`
- 不改写已推送的提交历史(rebase/amend 仅限未推送内容)。
## 提交前本地门禁(未来 CI 将执行同一清单)
| 仓库 | 必跑命令 | 通过标准 |
| --- | --- | --- |
| patbond-api | `JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./mvnw clean test` | BUILD SUCCESS0 失败(需 Docker 供 Testcontainers |
| patbond-flutter | `dart format --output=none --set-exit-if-changed lib test`<br>`flutter analyze`<br>`flutter test` | 0 changed / No issues / All tests passed |
| patbond-doc | `mkdocs build --strict -d <临时目录>` | exit 0,零 warning;不把 `site/` 落进仓库 |
门禁不绿不提交。CI 载体(审计 M3 后半)落地后将原样执行上表命令作为合入门禁。