Catches `TODO.md` up with `next`. The `README.md` entry takes the text that landed, word for word. The entry of this rewrite takes the date 2026-11-02. The entries of #146 and #147 are added in their place, newest first, in short sentences, with every fact, date and link kept. Nothing else changes. Model: fable-5-1
This commit is contained in:
@@ -32,7 +32,7 @@ are known.
|
|||||||
- `TODO.md` rewritten from scratch by the same rules as `README.md`, sentence by
|
- `TODO.md` rewritten from scratch by the same rules as `README.md`, sentence by
|
||||||
sentence. Every completed step is kept, with its date and its issue or branch.
|
sentence. Every completed step is kept, with its date and its issue or branch.
|
||||||
The policy-compliance checklist of 2026-07-22 is folded into its step
|
The policy-compliance checklist of 2026-07-22 is folded into its step
|
||||||
(2026-10-26, https://git.eeqj.de/sneak/sfdupes/issues/135)
|
(2026-11-02, https://git.eeqj.de/sneak/sfdupes/issues/135)
|
||||||
|
|
||||||
- `README.md` rewritten from scratch, sentence by sentence, as a newcomer reads
|
- `README.md` rewritten from scratch, sentence by sentence, as a newcomer reads
|
||||||
it. It leads with what the program is and how to use it. A reference section
|
it. It leads with what the program is and how to use it. A reference section
|
||||||
@@ -40,7 +40,23 @@ are known.
|
|||||||
Every statement was checked against the code on `next`. Five comments in
|
Every statement was checked against the code on `next`. Five comments in
|
||||||
`main_test.go` cite "Settings", where their rules now live. One comment each
|
`main_test.go` cite "Settings", where their rules now live. One comment each
|
||||||
in `scan_test.go`, `trees_test.go` and `exclude_test.go` cites what the README
|
in `scan_test.go`, `trees_test.go` and `exclude_test.go` cites what the README
|
||||||
now says (2026-10-26, https://git.eeqj.de/sneak/sfdupes/issues/135)
|
now says (2026-11-02, https://git.eeqj.de/sneak/sfdupes/issues/135)
|
||||||
|
|
||||||
|
- Each record holds `disk_size`, the bytes the file takes on disk. That is its
|
||||||
|
allocated blocks, `st_blocks` × 512, from the `lstat` call the walk already
|
||||||
|
makes. `trees` prints a `disk_size` column after `size`. It is the sum over
|
||||||
|
the `dupe` copy's files. On a compressed or sparse file `disk_size` differs
|
||||||
|
from `size`. A rescan updates the `disk_size` of an unchanged file whose size
|
||||||
|
on disk changed, without reading the file (2026-10-27,
|
||||||
|
https://git.eeqj.de/sneak/sfdupes/issues/147)
|
||||||
|
|
||||||
|
- The database keeps the number of records and the sum of their sizes in the one
|
||||||
|
row of a `totals` table. Three triggers on `files` keep that row current.
|
||||||
|
`info` reads that row. So do `scan`'s `load` phase and the `read` phases of
|
||||||
|
`report` and `trees`, for their totals. No count reads every record any more.
|
||||||
|
The triggers make each write to `files` slower. `scan` keeps SQLite's
|
||||||
|
temporary data in memory. That wins back part of that time (2026-10-27,
|
||||||
|
https://git.eeqj.de/sneak/sfdupes/issues/146)
|
||||||
|
|
||||||
- an operand at or inside a directory named `.zfs` is never scanned, whether
|
- an operand at or inside a directory named `.zfs` is never scanned, whether
|
||||||
given alone or under another operand. `scan` warns about it, counts it as
|
given alone or under another operand. `scan` warns about it, counts it as
|
||||||
|
|||||||
Reference in New Issue
Block a user