Skip to main content

Module migrate

Module migrate 

Source
Expand description

Carrying a container written when revs were zstd over to gzip. Native only, and the last thing in the tree that names zstd. blockworx migrate: a container written when revs were zstd, read by a build that writes them as gzip.

One compressor everywhere is what lets a container move between a browser and a desktop untranslated, and zstd’s C does not build for wasm32-unknown-unknown — so the format changed, and the containers already on the developer’s disk are carried over rather than left behind. This module is the last thing in the tree that names zstd and goes with the release after the one that lands it.

The manifest is rewritten, because it has to be. A row stamps the digest of the bytes the rev file holds, so re-compressing a rev changes what its row must say, and every row after it links to that row. Each row keeps every column it carried — the wall time, the author, the camera, the kind, the label — and gets a new hash and a new parent, which is exactly the chain the same rows would have had if this build had written them. The file goes down whole or not at all.

Enums§

Migrated
What the migration did.
MigrationFailure

Functions§

carry_over 🔒
Read rev at as zstd and write it back as gzip, answering the digest its row must now stamp and whether anything moved.
lines 🔒
read 🔒
read_manifest 🔒
restamp 🔒
Give every row the hash its rev now has, and chain the file again.
to_gzip
Rewrite storage’s revs from zstd to gzip, re-stamp the rows that name them, and refresh the projection so its stamp names the head as it now stands.
zstd_entry 🔒
What a rev file was called before the encoding changed.