Say what the content phase's check does to a stale record
check / check (push) Successful in 53s

The README content phase item and the contentCandidates comment said a
file failing the check is not a duplicate. It keeps its record and does
not count as a match; with a content hash it is still reported until a
scan covering its tree updates or removes it.

Model: opus-5-5
This commit is contained in:
2026-09-23 13:51:07 +00:00
parent fff4409a24
commit 3fd8ea8990
2 changed files with 16 additions and 10 deletions
+8 -5
View File
@@ -607,11 +607,14 @@ func (s *scanState) contentPhase(ctx context.Context, workers int) error {
// their records by path. Every record contentCandidatesSQL returns has
// its file checked with lstat, whether or not it already has a content
// hash: a file that is gone, is no longer a regular file, or has
// changed by the walk's rule keeps its record as it is and is not a
// duplicate, and any other lstat error is warned about and counted as
// skipped. The files of a group that pass and have no content hash are
// read only if at least minGroupSize of the group's files pass, so a
// group whose other members are all stale costs no reads. Only the
// changed by the walk's rule keeps its record as it is and does not
// count as a match for the others, and any other lstat error is warned
// about and counted as skipped, with the same result. If such a record
// has no content hash, it stays out of duplicate groups; if it has one,
// it is still reported until a scan covering its own tree updates or
// removes it. The files of a group that pass and have no content hash
// are read only if at least minGroupSize of the group's files pass, so
// a group whose other members are all stale costs no reads. Only the
// records to be read are kept.
func (s *scanState) contentCandidates(
ctx context.Context,