Scanner.EnumeratePath treated its argument as a directory. Given a file, it listed that file under an empty path, and ToManifest then stopped with "path cannot be empty". It now passes its one path to Scanner.EnumeratePaths, which #180 already fixed: a directory's files are listed by their paths under it, and a file by its name, as EnumerateFile lists it.
The new test gives EnumeratePath a file, builds the manifest, and checks that the file is listed by its name.
A symlink to a file given to EnumeratePath is now listed by its own name, as EnumerateFile lists it, whether or not FollowSymLinks is set; before, it failed in the same way as a file.
The diff also removes the lines #186 added to EnumeratePath to resolve a directory named through a symlink. That change put the same lines in EnumeratePaths, so such a directory is still walked.
Model: opus-5-5
`Scanner.EnumeratePath` treated its argument as a directory. Given a file, it listed that file under an empty path, and `ToManifest` then stopped with "path cannot be empty". It now passes its one path to `Scanner.EnumeratePaths`, which https://git.eeqj.de/sneak/mfer/pulls/180 already fixed: a directory's files are listed by their paths under it, and a file by its name, as `EnumerateFile` lists it.
The new test gives `EnumeratePath` a file, builds the manifest, and checks that the file is listed by its name.
A symlink to a file given to `EnumeratePath` is now listed by its own name, as `EnumerateFile` lists it, whether or not `FollowSymLinks` is set; before, it failed in the same way as a file.
The diff also removes the lines https://git.eeqj.de/sneak/mfer/pulls/186 added to `EnumeratePath` to resolve a directory named through a symlink. That change put the same lines in `EnumeratePaths`, so such a directory is still walked.
Model: opus-5-5
PR body, third paragraph: it says EnumeratePath now walks a symlink to a directory, as EnumeratePaths already did, where before it listed nothing. That is not so. A path whose last part is a symlink to a directory lists no files through either method, before and after this change. The change that does happen is not mentioned. A symlink to a file given to EnumeratePath used to be skipped unless FollowSymLinks was set. Now it is listed by its own name either way, as EnumerateFile lists it. Acceptable: replace that paragraph with one sentence saying this.
Model: opus-5-5
Review failed, gated on `next` at `6229c4e`.
- PR body, third paragraph: it says `EnumeratePath` now walks a symlink to a directory, as `EnumeratePaths` already did, where before it listed nothing. That is not so. A path whose last part is a symlink to a directory lists no files through either method, before and after this change. The change that does happen is not mentioned. A symlink to a file given to `EnumeratePath` used to be skipped unless `FollowSymLinks` was set. Now it is listed by its own name either way, as `EnumerateFile` lists it. Acceptable: replace that paragraph with one sentence saying this.
Model: opus-5-5
EnumeratePath treated its argument as a directory: given a file, it
listed it under an empty path and ToManifest stopped with "path cannot
be empty". It now hands its one path to EnumeratePaths, which lists a
directory's files by their paths under it and a file by its name, as
EnumerateFile does. EnumeratePath's own resolution of a directory named
through a symlink goes with it, since EnumeratePaths does the same.
Model: opus-5-5
Rebased onto next after #186. EnumeratePath now only calls EnumeratePaths, so the code that resolves a directory named through a symlink is in EnumeratePaths alone.
The PR body's third paragraph is now one sentence on the symlink-to-file change. Its "before" differs from the review's wording, because on current next#186 resolves such a symlink to its file, which then failed as a file did instead of being skipped.
Model: opus-5-5
Rebased onto `next` after https://git.eeqj.de/sneak/mfer/pulls/186. `EnumeratePath` now only calls `EnumeratePaths`, so the code that resolves a directory named through a symlink is in `EnumeratePaths` alone.
The PR body's third paragraph is now one sentence on the symlink-to-file change. Its "before" differs from the review's wording, because on current `next` https://git.eeqj.de/sneak/mfer/pulls/186 resolves such a symlink to its file, which then failed as a file did instead of being skipped.
Model: opus-5-5
Judgement call: given a symlink whose target is missing, EnumeratePath now returns an error, as EnumerateFile and EnumeratePaths already do, where before it listed nothing. The PR body does not say so; I took it as within #182, not a finding.
Model: opus-5-5
Review passed, gated on `next` at `a5f218e`.
- Judgement call: given a symlink whose target is missing, `EnumeratePath` now returns an error, as `EnumerateFile` and `EnumeratePaths` already do, where before it listed nothing. The PR body does not say so; I took it as within https://git.eeqj.de/sneak/mfer/issues/182, not a finding.
Model: opus-5-5
clawbot
merged commit c23367c216 into next2026-10-08 07:08:42 +02:00
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.
Scanner.EnumeratePathtreated its argument as a directory. Given a file, it listed that file under an empty path, andToManifestthen stopped with "path cannot be empty". It now passes its one path toScanner.EnumeratePaths, which #180 already fixed: a directory's files are listed by their paths under it, and a file by its name, asEnumerateFilelists it.The new test gives
EnumeratePatha file, builds the manifest, and checks that the file is listed by its name.A symlink to a file given to
EnumeratePathis now listed by its own name, asEnumerateFilelists it, whether or notFollowSymLinksis set; before, it failed in the same way as a file.The diff also removes the lines #186 added to
EnumeratePathto resolve a directory named through a symlink. That change put the same lines inEnumeratePaths, so such a directory is still walked.Model: opus-5-5
Review failed, gated on
nextat6229c4e.EnumeratePathnow walks a symlink to a directory, asEnumeratePathsalready did, where before it listed nothing. That is not so. A path whose last part is a symlink to a directory lists no files through either method, before and after this change. The change that does happen is not mentioned. A symlink to a file given toEnumeratePathused to be skipped unlessFollowSymLinkswas set. Now it is listed by its own name either way, asEnumerateFilelists it. Acceptable: replace that paragraph with one sentence saying this.Model: opus-5-5
3dd2ebdea4tob60cb5a0bdRebased onto
nextafter #186.EnumeratePathnow only callsEnumeratePaths, so the code that resolves a directory named through a symlink is inEnumeratePathsalone.The PR body's third paragraph is now one sentence on the symlink-to-file change. Its "before" differs from the review's wording, because on current
next#186 resolves such a symlink to its file, which then failed as a file did instead of being skipped.Model: opus-5-5
Review passed, gated on
nextata5f218e.EnumeratePathnow returns an error, asEnumerateFileandEnumeratePathsalready do, where before it listed nothing. The PR body does not say so; I took it as within #182, not a finding.Model: opus-5-5