75 lines
2.6 KiB
Markdown
75 lines
2.6 KiB
Markdown
# Phase 2 执行计划
|
||
|
||
## Step 1 — 前置
|
||
|
||
- [ ] Phase 1 的 AC1.1–AC1.8 全绿
|
||
- [ ] 定档 §「待决策」四项(仓库名 / 托管 / 分发 / 过渡期策略)
|
||
|
||
## Step 2 — 拆出仓库(保历史)
|
||
|
||
```bash
|
||
# 方案 A:subtree split
|
||
git subtree split --prefix=packages/road-compiler -b road-compiler-export
|
||
# 在新目录初始化并拉入该分支
|
||
|
||
# 方案 B:filter-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.js` 的 `toRoadCompilerInput()` 输出改为 CLI 参数或 input JSON 文件
|
||
- [ ] 删除 `packages/road-compiler/`(或按过渡期决策保留)
|
||
- [ ] `.trellis/spec/pipeline/` 加契约指针
|
||
|
||
## Step 5 — 验证
|
||
|
||
```bash
|
||
# 宿主端到端
|
||
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.1–AC2.7 全绿。特别是 AC2.2(脱离宿主可自测)—— 这是"独立可维护"的实质。
|
||
|
||
## Rollback
|
||
|
||
- 宿主依赖改回 `file:packages/road-compiler`(若过渡期保留了该目录)
|
||
- 或 `git revert` 宿主侧改造 commit;新仓库留着不影响宿主
|