github Byron/dua-cli v2.41.0

4 hours ago

There are two major features: 30x and more performance on Windows, and --ignore-from <file> support.
This makes this release the best one yet, and I do hope that I can last a week or more until the next one.

New Features

  • add --ignore-from to exclude paths with gitignore-style patterns
    Reads gitignore-syntax patterns from one or more files and leaves everything
    they match out of the report, in both aggregate and interactive mode. This is
    the equivalent of rsync's --exclude-from and restic's --exclude-file, so the
    same pattern file can answer "how much of this would actually be backed up?".

    Matching is powered by gix-ignore, which is already a dependency, so negation,
    anchoring, ** and directory-only patterns all behave exactly like Git.
    Excluded directories are pruned from the walk rather than only hidden, and
    excluded top-level paths are dropped before the walk so they are absent from
    the report instead of appearing as empty.

Bug Fixes

  • propagate background root device errors

    Background traversal replaced failed root-device lookups with device ID
    zero. Readable root metadata could then be rejected as cross-device while the
    traversal incorrectly retained a successful error count.

    Skip roots whose lookup fails and carry their per-root errors in the traversal
    completion event, restoring the previous statistics and exit status. Keep
    interleaved overlapping and duplicate roots isolated by including each root path
    Arc allocation in private directory-map keys while preserving public traversal
    event types.

  • propagate aggregate root device errors

    A failed root-device lookup was replaced with device ID zero after the parallel
    traversal rewrite. For a dangling symlink, symlink metadata remained readable
    but failed the device check, hiding the initialization error and producing a
    successful exit status.

    Count the lookup failure on its root, mark that root complete for ordered
    output, and omit it from traversal. Flush completed roots after traversal
    because failed roots emit no completion event.

    Keep all roots in the shared
    parallel traversal pool; when hard links are deduplicated, per-root attribution
    is scheduling-dependent while the total remains correct, in the name of performance.

Commit Statistics

  • 14 commits contributed to the release.
  • 2 days passed between releases.
  • 3 commits were understood as conventional.
  • 1 unique issue was worked on: #302

Commit Details

view details
  • #302
    • Avoid per-entry Windows metadata queries (9831b1e)
  • Uncategorized
    • Prepare changelog prior to release (2b78d30)
    • Merge pull request #359 from Byron/windows-performance (bdee013)
    • Review (d784e02)
    • Simplify platform-specific walker entries (f94fe6d)
    • Address CI comment about reader type complexity (542e36a)
    • Use Result::is_ok_and in entry checks (29b9c8c)
    • Optimize Windows directory metadata scheduling (e36a66d)
    • Merge pull request #358 from pelazas/feat/ignore-from (1db53ae)
    • Review (af83aa5)
    • Add --ignore-from to exclude paths with gitignore-style patterns (27d16f0)
    • Merge pull request #357 from Byron/crossdev-fix (d7b1503)
    • Propagate background root device errors (b4d944e)
    • Propagate aggregate root device errors (01d7e00)

Don't miss a new dua-cli release

NewReleases is sending notifications on new releases.