Lands migrated bytes in a workspace, backing up anything it would overwrite.
The last mile of an on-boarding migration, and until now it was the one step the user did by hand:
migrate convert wrote a dump and then stopped. Everything here goes through one primitive that
takes every backup first, verifies each one by digest, and only then writes -- so a failure part
way leaves either the original tree or a complete backup of it, never half of each.
A database is not the same thing as a dump.--db takes a SQLite FILE; a converted dump
becomes one with sqlite3 site.sqlite < dump.sql, and that step is printed rather than run,
because replaying somebody's dump is a decision with a different blast radius from copying a file.
Lands migrated bytes in a workspace, backing up anything it would overwrite.
The last mile of an on-boarding migration, and until now it was the one step the user did by hand:
migrate convertwrote a dump and then stopped. Everything here goes through one primitive that takes every backup first, verifies each one by digest, and only then writes -- so a failure part way leaves either the original tree or a complete backup of it, never half of each.A database is not the same thing as a dump.
--dbtakes a SQLite FILE; a converted dump becomes one withsqlite3 site.sqlite < dump.sql, and that step is printed rather than run, because replaying somebody's dump is a decision with a different blast radius from copying a file.