report: show its phases as N of M, with progress, elapsed time and ETA (closes #114)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
report now runs in two phases, open and read, under the progress display scan and trees use, until the summary line. open covers a wait on a busy database. read counts the records, then reads them in the same read-only transaction in signature order, the files_signature index read backwards, so SQLite sorts nothing and the read ends at exactly its count. The duplicate groups are formed in Go from runs of equal signatures; only those of the size being read are held, and they are written, ordered by first path, before the next size. The rows go through the display's stdout writer. stdout and the summary line are unchanged. Judgement call: writing is part of read, not a phase of its own, since each size's rows are written while the read goes on. Model: opus-5-5
This commit was merged in pull request #122.
This commit is contained in:
@@ -29,6 +29,18 @@
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- `report` shows its work on stderr in two phases, `[1/2] open` and
|
||||
`[2/2] read`, with the progress display `scan` and `trees` use, from the
|
||||
moment it starts until the summary line: `open` says it is opening the
|
||||
database, also while it waits on a busy one; `read` counts the records, then
|
||||
reads them against that count in signature order, which SQLite takes from the
|
||||
`files_signature` index without sorting, so the first record comes at once.
|
||||
`report` forms the duplicate groups itself, holding only those of the size it
|
||||
is reading, and writes them ordered by first path before it reads the next
|
||||
size. stdout and the summary line are unchanged, and SQLite no longer needs a
|
||||
temporary file to sort in (2026-10-16,
|
||||
https://git.eeqj.de/sneak/sfdupes/issues/114)
|
||||
|
||||
- `trees` shows its work on stderr in four phases, `[1/4] open`, `[2/4] read`,
|
||||
`[3/4] group` and `[4/4] write`, each with the progress display `scan` uses,
|
||||
from the moment it starts until the summary line: `open` says it is opening
|
||||
|
||||
Reference in New Issue
Block a user