Final rebrand: rename remaining Rust source file to complete the gsd → forge transition. All parser references already use forge_parser after earlier commits. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.2 KiB
3.2 KiB
团队协作
SF 支持多人并行工作流,让多个开发者可以同时在同一个仓库中工作。
设置
1. 启用 Team Mode
为团队使用配置 SF 的最简单方法,是在项目偏好中设置 mode: team。这会一次性开启唯一 milestone ID、推送分支和预合并检查:
# .sf/PREFERENCES.md(项目级,提交到 git)
---
version: 1
mode: team
---
这相当于手动设置 unique_milestone_ids: true、git.push_branches: true、git.pre_merge_check: true 以及其他适合团队协作的默认值。你仍然可以覆盖单个选项,例如如果团队偏好自动推送,也可以在 mode: team 基础上再加 git.auto_push: true。
你也可以不使用 mode,而是单独配置每一项设置(详见 Git 策略)。
2. 配置 .gitignore
共享规划产物(milestones、roadmaps、decisions),同时把运行时文件保留在本地:
# ── SF:运行时 / 临时文件(按开发者、按会话隔离)──────
.sf/auto.lock
.sf/completed-units.json
.sf/STATE.md
.sf/metrics.json
.sf/activity/
.sf/runtime/
.sf/worktrees/
.sf/milestones/**/continue.md
.sf/milestones/**/*-CONTINUE.md
会共享的内容(提交到 git):
.sf/PREFERENCES.md:项目偏好.sf/PROJECT.md:持续维护的项目描述.sf/REQUIREMENTS.md:需求契约.sf/DECISIONS.md:架构决策.sf/milestones/:roadmaps、plans、summaries 和 research
仅保留本地的内容(gitignore):
- 锁文件、指标、状态缓存、运行时记录、worktrees、活动日志
3. 提交偏好设置
git add .sf/PREFERENCES.md
git commit -m "chore: enable SF team workflow"
commit_docs: false
如果团队里只有部分成员使用 SF,或者公司策略要求仓库保持干净:
git:
commit_docs: false
这会把整个 .sf/ 加入 .gitignore,让所有产物都保留在本地。这样使用 SF 的开发者仍然能获得结构化规划的好处,而不会影响不使用 SF 的同事。
迁移现有项目
如果你当前项目里对 .sf/ 做了整目录忽略:
- 确保当前没有进行中的 milestones(工作区状态干净)
- 按上面的选择性规则更新
.gitignore - 在
.sf/PREFERENCES.md中添加unique_milestone_ids: true - 如有需要,重命名现有 milestones 以使用唯一 ID:
I have turned on unique milestone ids, please update all old milestone ids to use this new format e.g. M001-abc123 where abc123 is a random 6 char lowercase alpha numeric string. Update all references in all .sf file contents, file names and directory names. Validate your work once done to ensure referential integrity. - 提交修改
并行开发
多个开发者可以同时对不同 milestones 运行自动模式。每个开发者都会:
- 获得自己的 worktree(
.sf/worktrees/<MID>/,已加入 gitignore) - 在独立的
milestone/<MID>分支上工作 - 独立地 squash merge 回主分支
milestone 依赖可以通过 M00X-CONTEXT.md frontmatter 声明:
---
depends_on: [M001-eh88as]
---
SF 会强制要求上游依赖 milestone 先完成,之后才会启动下游工作。