Stop task-finish from uninitializing shared submodule config #75
@@ -8,3 +8,6 @@ runtime/
|
||||
|
||||
# 运行时环境文件(含密钥,不入库;svc-envfile 任务约定)
|
||||
.env.dev
|
||||
|
||||
# ZCode CLI 会话生成的工具忽略文件(内容镜像 .gitignore,工具自动维护,不入库)
|
||||
.zcodeignore
|
||||
|
||||
@@ -44,3 +44,5 @@
|
||||
| 同步前验收 | 7db242792a1561b2aad7877278d42f249369c2b9 | 314de91df3755cae006f5ced777eb71d0baa92b1 | 2026-09-30T14:29:40Z |
|
||||
| 同步前验收 | ffda6d33eabb23c9be5bac221529367d771c5f7b | ac8db54ecb8ddc1e077bfec772a1665d3c2d753a | 2026-09-30T15:22:40Z |
|
||||
| 同步前验收 | 7fab8feaf7b454fda4b85fd01fb6ad179496dfcd | aecaa52e6bca27c072cd89b295a75c8a4ea744aa | 2026-09-30T15:28:27Z |
|
||||
| 同步前验收 | 425c6e63f22fff0d200cfcbebd764fe0ed46c637 | b46d8905297dcb0d66ef4855f6ec026391cb4679 | 2026-09-30T16:01:38Z |
|
||||
| 同步前验收 | 03dc518eec70eccdc88a1c4f0e525e29bbd2a556 | a552939497cf7f5d8e0b2a9b19a2e9d110000bbd | 2026-09-30T16:03:44Z |
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# fix/task-finish-close-followups 任务卡
|
||||
|
||||
任务主记录:<PR 链接,task-finish 时填写>;状态:进行中;owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= bb1bf06aec6d3f848ce6a1ca291c6ef6dc4da4ab
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-fix-task-finish-close-followups(worktree);分支:fix/task-finish-close-followups
|
||||
- 授权与交付终点:修复 task-finish 对共享子模块配置的污染并完成配套文档/忽略项收敛;终点为 PR 合入 main 后回收 worktree。
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
- 目标:①`cmd_finish` 去掉 `submodule deinit --all`——submodule url 配置在共享 `.git/config`,deinit 会把其他检出/worktree 的子模块一并标成未初始化(工作区清理本就走 rm -rf + prune,deinit 无实际作用);②AGENTS.md 任务卡闭合描述与实测对齐(ff-only pull 同样触发 post-merge 钩子;钩子内 close 扫不到远端新合卡,需手动兜底);③`.gitignore` 增加 `.zcodeignore`(ZCode CLI 会话产物,不入库)。
|
||||
- 非目标:close 默认 web_base 改 git-home——由并行 PR #73 完成,本卡撤回该项;不改 start 落点(PR #69 已修);不改 precheck 判脏口径。
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | bb1bf06aec6d3f848ce6a1ca291c6ef6dc4da4ab | bb1bf06aec6d3f848ce6a1ca291c6ef6dc4da4ab | 2026-09-30T15:46:04Z |
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:`cmd_finish` 删除 deinit 行并留注释说明共享 config 污染机理;AGENTS.md 闭合路径句改写;`.gitignore` 追加 `.zcodeignore`。bug 期间被并行会话现场复现:其 task-finish 后主检出 `submodule.*.url` 配置归零(uninit=12),本卡验证前已用 make sync 恢复。
|
||||
- 验证:`bash -n` 通过;abandon 冒烟——修复版脚本 start→FORCE_ABANDON=1 finish 一条假任务,断言共享 `submodule.*.url` 计数 12→12(修复前会归 0)、主检出 `submodule status --recursive` uninit=0、smoke worktree/分支全部回收;顺带证实 inline close 能兜底闭合并行会话漏闭合的卡(feature-gitea-access-facts,经 feature/card-close-20260930-155017Z 分支)。
|
||||
- 影响与剩余项:无剩余项;HTTPS API 与 SSH 在收尾阶段出现家服隧道整体瞬断,推送与 PR 推进待通道恢复后完成。
|
||||
@@ -15,9 +15,10 @@
|
||||
当前目录当 worktree 回收——在主检出运行会误删主检出,已加防护);放弃未合入
|
||||
工作用 `make task-finish ABANDON="--abandon <原因>"` 并记录原因。
|
||||
- **任务卡闭合(防欠账)**:分支合入 main 后,其任务卡须回填"已完成"+主记录 PR 链接并
|
||||
归档至 `.task/archive/`。自动路径:`make task-finish` 收尾触发、主检出 merge 型 pull 触发
|
||||
post-merge 钩子(ff-only 不触发,由前两者兜底);手动为 `make task-close`(主检出运行→建
|
||||
`feature/card-close-*` 分支+PR,任务分支内加 `FOLD=--fold` 随当前 PR 合入)。
|
||||
归档至 `.task/archive/`。自动路径:`make task-finish` 收尾触发、主检出 pull 触发 post-merge
|
||||
钩子(实测 ff-only pull 也触发);钩子内 close 只扫主检出本地 `.task/`,远端刚合入的卡片
|
||||
要等 pull 完成才能被看到,扫不到时由手动 `make task-close` 兜底。手动闭合在主检出运行→建
|
||||
`feature/card-close-*` 分支+PR,任务分支内加 `FOLD=--fold` 随当前 PR 合入。
|
||||
precheck 的 `[cards]` 行报告欠账,验收前应清零;闭合 PR 由所有者合入。
|
||||
|
||||
## 提交与 PR
|
||||
|
||||
+3
-3
@@ -268,9 +268,9 @@ cmd_finish() {
|
||||
git merge-base --is-ancestor "$head" "origin/${TARGET_BRANCH}" || die "分支未合入 origin/${TARGET_BRANCH}——先走 PR 合入;放弃则用 --abandon <reason>"
|
||||
echo "[verified] ${branch} 已包含于 origin/${TARGET_BRANCH};成果已落盘"
|
||||
fi
|
||||
git submodule deinit --all -f >/dev/null 2>&1 || true
|
||||
# git 对含 gitlink 的 worktree 无条件拒绝 remove(查索引,与 deinit 无关):
|
||||
# 已验证合入且子模块已 deinit 后,直接清目录并 prune。
|
||||
# git 对含 gitlink 的 worktree 无条件拒绝 remove(查索引),回收走 rm -rf + prune。
|
||||
# 此处不得跑 submodule deinit:submodule.<name>.url 写在共享的 .git/config 里,deinit
|
||||
# 会把其他检出/worktree 的子模块一并标成未初始化(2026-09-30 实测 finish 后主检出 uninit=12)。
|
||||
git -C "$mainrepo" worktree remove "$PWD" 2>/dev/null || { rm -rf "$PWD"; git -C "$mainrepo" worktree prune; }
|
||||
git -C "$mainrepo" branch -d "$branch" 2>/dev/null || git -C "$mainrepo" branch -D "$branch"
|
||||
git -C "$mainrepo" worktree prune
|
||||
|
||||
Reference in New Issue
Block a user