Fix bare library deletion with a private index-info input file
This commit is contained in:
1 parent
8a47c462a4
commit
7932c979ab
2 files changed
+21
-1
No files matched your search
@@ -420,3 +420,18 @@ The eleven nonliteral import expression sites were rechecked; whole parent tests
|
||||
Generated programs/runtime plugin discovery remain documented static limitations.
|
||||
Artifacts and chain witnesses: /mnt/storage/scratch/bubba-row288/static-r3/.
|
||||
No Node, npm, test, syntax check, build, mutant or gate run. Pending Sage CLEAR.
|
||||
|
||||
## 2026-10-25 first CLEAR and delete-path RED/GREEN (sage-4396/4398)
|
||||
|
||||
Own root npm ci rc0; own webui npm ci rc0; editor build rc0. Fresh TMPDIR from mktemp
|
||||
under /mnt/storage/scratch/tmp. All Node whole-file runs nice19, timeout600 kill-after10.
|
||||
Initial own write.test.mjs rc1,10 pass/2 fail: delete and revert-to-absent hit library-git.
|
||||
Isolated bare Git confirms update-index --force-remove rc128 (requires worktree), while
|
||||
--index-info rc0. First replacement and two delimiter-investigation reruns still rc1,
|
||||
10/2: runGit's stdin argument names an input FILE, not input text. No pre-existing test
|
||||
ran or was edited. Final correction writes a private NUL-delimited removal record in the
|
||||
already-cleaned staging dir and supplies that file to update-index -z --index-info.
|
||||
Whole write.test.mjs now rc0,12/12,0 skipped/cancelled. Source-only fix in owned write.mjs.
|
||||
Logs remain /mnt/storage/scratch/bubba-row288/gate-r3/ (write-fixed through write-fixed4).
|
||||
Sage4398 authorizes this fix and requires committed new candidate + driver restart from
|
||||
first whole file. Focused green is not the complete gate; remaining acceptance pending.
|
||||
@@ -74,7 +74,12 @@ async function plumbing(mirror, tip, path, content, identity, message, stage) {
|
||||
};
|
||||
rmSync(env.GIT_INDEX_FILE, { force: true });
|
||||
await run(['read-tree', tip]);
|
||||
if (content === null) await run(['update-index', '--force-remove', '--', path]);
|
||||
// --force-remove requires a worktree. Feed a NUL-delimited removal to the bare index.
|
||||
if (content === null) {
|
||||
const removal = join(stage, 'removal');
|
||||
writeFileSync(removal, `0 ${'0'.repeat(40)}\t${path}\0`, { mode: 0o600 });
|
||||
await run(['update-index', '-z', '--index-info'], removal);
|
||||
}
|
||||
else {
|
||||
const file = join(stage, 'content'); writeFileSync(file, content, { mode: 0o600 });
|
||||
const blob = await run(['hash-object', '-w', '--no-filters', file]);
|
||||
|
||||
Reference in new issue
Block a user