3.8 KiB
3.8 KiB
STORAGE LABOS 团队协作指南
本文是团队日常 Git 操作的简明入口;完整工程约束见 ProjectManual.md 第 13 章。
1. 首次加入项目
公开仓库允许匿名克隆;需要提交代码、Issue 或 Pull Request 的成员先注册账号并由管理员批准:
git clone https://git.imagebrewing.com/yuanshuai/storage-labos.git
cd storage-labos/flashops
make setup
make test
不要通过聊天工具传递压缩包继续开发;Git 仓库是代码和文档的唯一版本来源。
2. 分支规则
main:始终保持测试通过和可发布,禁止直接开发或强制推送。feat/<short-name>:功能开发。fix/<short-name>:缺陷修复。docs/<short-name>:纯文档变更。chore/<short-name>:构建、依赖、部署与仓库维护。
一项工作一个分支;不要把无关功能、生产配置和大规模格式化混在同一分支。
git switch main
git pull --ff-only
git switch -c feat/agent-step-lease
3. 提交前质量门
cd flashops
make test
make demo
回到仓库根目录后,只暂存本次工作涉及的文件:
git status -sb
git add <明确的文件或目录>
git diff --cached --stat
git diff --cached --check
混合工作区不要直接使用 git add -A,避免把别人的改动、数据库或临时文件带入提交。
4. 提交格式
使用 Conventional Commits:type(scope): subject。
| 类型 | 用途 | 示例 |
|---|---|---|
feat |
新功能 | feat(agent): add step lease polling |
fix |
缺陷修复 | fix(safety): reject stale host heartbeat |
docs |
文档 | docs(manual): add agent deployment guide |
test |
测试 | test(agent): cover token rotation |
refactor |
不改变行为的重构 | refactor(events): isolate projection writer |
perf |
性能优化 | perf(api): reduce timeline query cost |
chore |
工具、依赖和部署 | chore(ci): add Python test matrix |
主题用祈使语气、简短明确;一次提交只表达一个完整意图。
5. 推送与 Pull Request
git commit -m "feat(agent): add step lease polling"
git push -u origin "$(git branch --show-current)"
在 Gitea 创建 Pull Request,并写清:改了什么、为什么改、影响范围、验证结果和风险。 至少一名团队成员评审且质量门通过后才能合并。当前 Gitea 未在生产服务器上启用自托管 Runner,提交者必须在 PR 中附上本地测试结果;未来接入隔离 CI Runner 后再把自动检查设为 必需。优先使用 Squash merge,PR 标题保持 Conventional Commit 格式;合并后删除远程功能分支。
评审者重点检查:
- 安全门禁、状态机和事件写路径是否被绕过;
- 是否新增或修改测试;
- API、数据结构、配置或部署变化是否同步更新手册;
- 是否包含凭据、生产数据、日志、构建产物或大文件;
- 危险动作是否仍为默认拒绝。
6. 冲突与回退
功能分支同步 main 时使用团队统一方式;首阶段建议 rebase:
git fetch origin
git rebase origin/main
仅允许对自己尚未合并的功能分支执行 git push --force-with-lease;严禁对 main 强推。
已合并变更需要撤销时使用 git revert <commit>,不要改写共享历史。
7. 绝不能提交的内容
.env、密码、Token、SSH 私钥、证书私钥;flashops/var/、SQLite 数据库、Evidence Bundle 和日志;.venv/、node_modules/、缓存和本机构建产物;~/.flashops/agent-state.json或任何 Agent 原始 bearer token;- 未脱敏的客户数据、设备序列号清单和生产备份。
如果凭据误入提交:立即停止推送、通知管理员轮换凭据,再清理历史;仅删除当前文件不等于 从 Git 历史中删除。