snapshot list worked out UNCOMPRESSED SIZE from the snapshot's file rows in the local index. A file's row is shared by every snapshot that lists it and rewritten when the file changes, so after a backup of a changed file, every older snapshot that lists the file appeared to hold its new chunks and its figure moved.
The backup now totals the distinct chunks of the snapshot's files when it records the snapshot's stats (UpdateExtendedStats, which runs once at the end of the backup), and writes the total to a new snapshots column, uncompressed_chunk_size. snapshot list reads that column, the same way #359 made it read new_chunk_size. The total is the same query snapshot list ran before, moved into that update; it names the snapshot as snapshots.id instead of taking the ID a second time. docs/DATAMODEL.md and the README's snapshot list description say so.
The new test backs up a tree and checks the first snapshot's figure. It then changes one file, backs up again, and checks that the first snapshot's figure has not moved and that the second snapshot's figure includes the changed file's chunks.
Judgement call: the total is computed in the SQL of UpdateExtendedStats instead of being passed in as an argument, so GetSnapshotUncompressedChunkSize keeps its name as the reader and no second function is needed to compute it.
Model: opus-5-5
Fixes https://git.eeqj.de/sneak/vaultik/issues/360.
`snapshot list` worked out UNCOMPRESSED SIZE from the snapshot's file rows in the local index. A file's row is shared by every snapshot that lists it and rewritten when the file changes, so after a backup of a changed file, every older snapshot that lists the file appeared to hold its new chunks and its figure moved.
The backup now totals the distinct chunks of the snapshot's files when it records the snapshot's stats (`UpdateExtendedStats`, which runs once at the end of the backup), and writes the total to a new `snapshots` column, `uncompressed_chunk_size`. `snapshot list` reads that column, the same way https://git.eeqj.de/sneak/vaultik/pulls/359 made it read `new_chunk_size`. The total is the same query `snapshot list` ran before, moved into that update; it names the snapshot as `snapshots.id` instead of taking the ID a second time. `docs/DATAMODEL.md` and the README's `snapshot list` description say so.
The new test backs up a tree and checks the first snapshot's figure. It then changes one file, backs up again, and checks that the first snapshot's figure has not moved and that the second snapshot's figure includes the changed file's chunks.
Judgement call: the total is computed in the SQL of `UpdateExtendedStats` instead of being passed in as an argument, so `GetSnapshotUncompressedChunkSize` keeps its name as the reader and no second function is needed to compute it.
Model: opus-5-5
snapshot list summed the chunks a snapshot reaches through its file rows
in the local index. A file's row is shared by every snapshot that lists
it and rewritten when the file changes, so backing up a changed file
changed every older snapshot's UNCOMPRESSED SIZE.
The backup now takes that total when it records the snapshot's stats,
into a new snapshots column, uncompressed_chunk_size, and snapshot list
reads the column, as it already does for new_chunk_size.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Fixes #360.
snapshot listworked out UNCOMPRESSED SIZE from the snapshot's file rows in the local index. A file's row is shared by every snapshot that lists it and rewritten when the file changes, so after a backup of a changed file, every older snapshot that lists the file appeared to hold its new chunks and its figure moved.The backup now totals the distinct chunks of the snapshot's files when it records the snapshot's stats (
UpdateExtendedStats, which runs once at the end of the backup), and writes the total to a newsnapshotscolumn,uncompressed_chunk_size.snapshot listreads that column, the same way #359 made it readnew_chunk_size. The total is the same querysnapshot listran before, moved into that update; it names the snapshot assnapshots.idinstead of taking the ID a second time.docs/DATAMODEL.mdand the README'ssnapshot listdescription say so.The new test backs up a tree and checks the first snapshot's figure. It then changes one file, backs up again, and checks that the first snapshot's figure has not moved and that the second snapshot's figure includes the changed file's chunks.
Judgement call: the total is computed in the SQL of
UpdateExtendedStatsinstead of being passed in as an argument, soGetSnapshotUncompressedChunkSizekeeps its name as the reader and no second function is needed to compute it.Model: opus-5-5
Review passed.
Model: opus-5-5