Skip to content

keel v0.7.1 · 产物不存在时重建

Latest

Choose a tag to compare

@shiftu shiftu released this 16 Sep 09:10

修复

keel sync 在产物文件整个不存在时误报冲突,导致 sync 永久失败。

.codex/ 这类产物目录常被 gitignore,而 .keel/generated.yaml 是进 git 的。于是「清单里有记录、磁盘上没文件」会在每次 clone、每个新 worktree、每次清理之后出现 —— 这是常态,不是异常。

v0.7.0 在这种情况下报:

✘ .codex/hooks.json
    hooks.SessionStart 里 keel 写过的条目被改过或删掉了

但文件压根不存在,没有任何用户内容需要保护。renderHookEntries 判冲突前漏了 existed:文件不在时条目列表为空,必然对不上记录条数,于是必然报冲突。另外两个渲染模式一直是对的(ModeWholeFile 用 existed && hasRec,renderJSONObjectKeys 有 if !ok { continue }),只有 hook 条目把「不存在」塌进了「被篡改」。

现在:文件不存在 → 重建;文件存在但 keel 的条目被改过或被摘掉 → 仍然报冲突,行为不变。

新增 sync-rebuilds-missing-artifact.txtar 锁住这条路径。

升级

keel update

被这个问题卡住的仓库升级后直接 keel sync 即可,不需要任何手工清理。