mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
798a6673c6
When edit_files receives multiple files, each file was processed independently: read, compute edits, write. If file B failed, file A was already written to disk. The caller got an error but had no way to know which files were modified. Split editFile into prepareFileEdit (read + compute, no side effects) and a write phase. The handler runs all preparations first and writes only if every file's edits succeed. A write-phase failure (e.g. disk full) can still leave earlier files committed. True cross-file atomicity would require filesystem transactions. The prepare phase catches the common failure modes: bad paths, search misses, permission errors.