Files
osmWorkflow/.trellis/tasks/08-25-rc-p2-repo-split/implement.md

2.6 KiB
Raw Blame History

Phase 2 执行计划

Step 1 — 前置

  • Phase 1 的 AC1.1AC1.8 全绿
  • 定档 §「待决策」四项(仓库名 / 托管 / 分发 / 过渡期策略)

Step 2 — 拆出仓库(保历史)

# 方案 Asubtree split
git subtree split --prefix=packages/road-compiler -b road-compiler-export
# 在新目录初始化并拉入该分支

# 方案 Bfilter-repo更彻底推荐
git clone --no-local . /tmp/road-compiler-split
cd /tmp/road-compiler-split
git filter-repo --path packages/road-compiler/ --path-rename packages/road-compiler/:

⚠️ 注意Phase 1 的搬迁若用了 git mv,历史可 --follow 追溯; 若用了删除+新建,filter-repo 只能追到 Phase 1。 Phase 1 搬迁时必须用 git mv —— 这条已在 Phase 1 implement Step 3 隐含, 此处显式记录依赖。

  • 拆出后验证:git log --follow src/compile/native-road.js | tail -20 能看到 08-13 native-road-compiler 的提交

Step 3 — 新仓库自持化

  • package.json 补全依赖(含 K4 的 OpenLayers
  • npm install && npm test 在新仓库独立通过
  • 基线 JSON 迁入 test/baseline/
  • 契约文档迁入 docs/
  • README契约摘要 + 与宿主项目关系说明

Step 4 — 宿主改造

  • package.json 依赖指向新仓库(开发期 file:
  • build-area.js 改子进程调用 + 解析 NATIVE_ROAD_COMPILE_DONE
  • area-config.jstoRoadCompilerInput() 输出改为 CLI 参数或 input JSON 文件
  • 删除 packages/road-compiler/(或按过渡期决策保留)
  • .trellis/spec/pipeline/ 加契约指针

Step 5 — 验证

# 宿主端到端
npm run build:area -- --config config/areas/fengshu-er-road.json

# 三区域 parity
for a in fengshu-er-road hanyang-block nantaizi-lake-innovation-valley; do
  node scripts/road-parity.js --config config/areas/$a.json \
    --compare .trellis/tasks/08-25-road-compiler-extraction/baseline/$a.json || echo "FAIL $a"
done

# 反向依赖为 0在新仓库内跑
grep -rn "osm2streets-qgis-workflow\|area-config" . --exclude-dir=node_modules --exclude-dir=.git \
  && echo "VIOLATION"

# 锁版本检查
node -e 'const d=require("./package.json").dependencies;console.log(d)' | grep -i road
  • 在一台未 clone 宿主的环境(或 /tmp 全新 clone验证 AC2.2

Review Gate

AC2.1AC2.7 全绿。特别是 AC2.2(脱离宿主可自测)—— 这是"独立可维护"的实质。

Rollback

  • 宿主依赖改回 file:packages/road-compiler(若过渡期保留了该目录)
  • git revert 宿主侧改造 commit新仓库留着不影响宿主