# 团队协作 SF 支持多人并行工作流,让多个开发者可以同时在同一个仓库中工作。 ## 设置 ### 1. 启用 Team Mode 为团队使用配置 SF 的最简单方法,是在项目偏好中设置 `mode: team`。这会一次性开启唯一 milestone ID、推送分支和预合并检查: ```yaml # .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 策略](git-strategy.md))。 ### 2. 配置 `.gitignore` 共享规划产物(milestones、roadmaps、decisions),同时把运行时文件保留在本地: ```bash # ── 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. 提交偏好设置 ```bash git add .sf/PREFERENCES.md git commit -m "chore: enable SF team workflow" ``` ## `commit_docs: false` 如果团队里只有部分成员使用 SF,或者公司策略要求仓库保持干净: ```yaml git: commit_docs: false ``` 这会把整个 `.sf/` 加入 `.gitignore`,让所有产物都保留在本地。这样使用 SF 的开发者仍然能获得结构化规划的好处,而不会影响不使用 SF 的同事。 ## 迁移现有项目 如果你当前项目里对 `.sf/` 做了整目录忽略: 1. 确保当前没有进行中的 milestones(工作区状态干净) 2. 按上面的选择性规则更新 `.gitignore` 3. 在 `.sf/PREFERENCES.md` 中添加 `unique_milestone_ids: true` 4. 如有需要,重命名现有 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. ``` 5. 提交修改 ## 并行开发 多个开发者可以同时对不同 milestones 运行自动模式。每个开发者都会: - 获得自己的 worktree(`.sf/worktrees//`,已加入 gitignore) - 在独立的 `milestone/` 分支上工作 - 独立地 squash merge 回主分支 milestone 依赖可以通过 `M00X-CONTEXT.md` frontmatter 声明: ```yaml --- depends_on: [M001-eh88as] --- ``` SF 会强制要求上游依赖 milestone 先完成,之后才会启动下游工作。