仓库管理指南
本文档介绍 TGOSKits 主仓库如何使用 Git Subtree 管理独立组件仓库,以及当前仍然生效的仓库组织方式。
1. 概述
TGOSKits 通过 Git Subtree 将多个独立组件仓库整合到主仓库中,既保留组件的独立开发能力,又支持跨系统联调、统一测试和集中维护。组件同步由维护者通过 scripts/repo/repo.py 手动执行。
1.1 核心特性
- 统一工作区:在一个仓库里同时开发组件、OS 和平台相关代码
- 历史保留:Subtree 保留组件的提交历史,便于追溯问题来源
- 配置显式:所有组件来源、路径和分支信息集中记录在
scripts/repo/repos.csv - 手动可控:组件同步由维护者显式执行
1.2 仓库结构
当前仓库的实际结构大致如下:
tgoskits/
├── components/ # subtree 管理的独立组件 crate
├── os/
│ ├── arceos/
│ ├── axvisor/
│ └── StarryOS/
├── platforms/ # 平台相关 crate
├── scripts/
│ └── repo/
│ ├── repo.py # subtree 管理脚本
│ └── repos.csv # 组件来源配置
├── .github/workflows/
│ └── test.yml # 当前保留的主 CI
└── docs/
需要特别注意:
components/并不是按Hypervisor/ArceOS/Starry建目录分层- 大多数组件直接平铺在
components/下 - 组件分类主要来自
scripts/repo/repos.csv中的category字段,而不是目录层级
2. 分支管理
TGOSKits 主仓库采用三层分支策略:main 作为稳定发布分支,dev 作为集成分支,开发者在个人功能分支上完成修改后再通过 PR 合入 dev。
2.1 分支总览
功能分支 (feature/*, fix/*, ...)
│ 开发者本地开发、自测
│
│ PR(禁止直接发到 main)
▼
dev 集成分支
│ 汇聚开发功能、执行 CI
│
│ 定期合并到 main
▼
main 稳定发布分支
│ 作为稳定基线维护
└──────────────────────────
2.2 main 分支
main 分支是仓库的稳定基线,适合承接已经在 dev 上完成集成验证的内容。
核心规则:
- 禁止直接 push,变更应通过受控流程进入
- 定期从
dev合并已验证的改动 - 作为对外展示和稳定使用的主线
2.3 dev 分支
dev 分支是日常开发的主战场,所有功能开发和 bug 修复最终都汇聚到这里。
核心规则:
- 所有常规开发 PR 默认进入
dev dev上的提交需要保持可编译、可测试main定期从dev合并