CoalWash v1.12.5 - estate-restore --to refuses a link or a hard-linked file already at a restored file's path #68
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
estate-restore --to refuses a link or a hard-linked file already at a restored file's path
A restore with
--to <dir>already refused a link planted in a directory below the destination, but it did not look at the restored file's own path. Nothing a user could do before is taken away. The installed plugin moved:scripts/lib/estate-archive.mjs(six lines inrestoreSession),skills/coalwash/references/method.mdand itsplugin/twin.Fixed
estate-restore --to <dir>checks the final file path too (CodeRabbit, PR ci: bump the npm_and_yarn group across 4 directories with 5 updates #18, threadr4231603560).ownSandboxDirchecked every directory component under the destination, but not the file path itself. Before the write,restoreSessionnow reads the entry already at that path withlstat. A symlink (dangling or not) or a junction there is refused with "restore refused on : the destination file is a link (a restore never writes through a link under its destination)". An entry that is not a regular file, or a file with a second hard link, is refused with "restore refused on : the destination entry is not a single-link regular file (a restore never writes through a link under its destination)". The planted entry is left in place, and files already written stay. An absent path and an ordinary single-link file behave as before. Measured on Windows before the fix: a junction there failed with a bareEPERMon the rename and no stated reason, and a hard link there was replaced (ok: true), the outside file untouched; the file-symlink legs could not be made on that box. The destination root may still be a link, your own choice. — test:scripts/lib/estate-archive.test.mjs,fire 67: a ${kind} already at <to>/<sid>.jsonl is refused, and what it points at is untouched(one leg each for a file symlink, a dangling file symlink, a junction and a hard link; a leg whose link this volume cannot make skips visibly; the file-symlink legs ran on no box yet, they belong to the POSIX CI legs) and its controlfire 67 control: an ordinary single-link file already at <to>/<sid>.jsonl is still replaced by the restored bytesChanged
estate-restorerow, the Write guard row and the Docs link inREADME.md, andreferences/method.md§3, now say what the code does. Theestate-restorerow andmethod.mdname the final-path check above. The Write guard row said "Off:writeGuard: "snapshot-only"or"off""; inconfig-schema.mjssnapshot-onlykeeps the airbag and silences only the advisory, and only"off"turns the guard off. The list of remaining subcommands namesconfig-status, which was missing from it. The Docs line points athttps://docs.thecolliery.org/tools/coalwash, and "(publishing soon)" is gone..github9456288:scripts/lib/wave-run.test.mjs,scripts/lib/git-env-census.mjs,scripts/lib/git-env-census.vectors.mjs,scripts/lib/machine-reading.mjs,scripts/verify-release-shape.mjsandscripts/verify-release-shape.test.mjs. Dev tooling; none of it is in the installed plugin.t120, PR ci: bump the npm_and_yarn group across 4 directories with 5 updates #18,E2-3,E2-5,E2-6). The held-cwd child intest-plan.test.mjsruns with HOME, USERPROFILE, TEMP, TMP and TMPDIR pointed at its sandbox, and its readiness wait is bounded by a poll count, notDate.now(). A newgit-env.test.mjstest provesgitEnvremovesGIT_DIRandGIT_INDEX_FILEfrom its copy and leavesprocess.envalone. The FIFO test inrepo-fs.test.mjsprobes whether a FIFO can be made (mkfifoexits 0 and the path is a FIFO) in place of a platform check; the platform gate on thewizard.test.mjsshort-name test is dropped and its child getsstdioand a timeout.build-plugin.mjsexportsDEV_ONLY_LIBS,build-plugin.test.mjsloops its never-ships check over every entry, and the failure text and comments name what the list holds.Release page · CoalWash
All reactions