Implement the RSYNC_COMPAT Phase-2 filter/parser feature group:
- --files-from=FILE (repeatable) plus -0/--from0 NUL delimiters: parse the
source file list relative to the source root into a shared read-only
allow-set; the scanner transfers listed files and the whole subtree of
listed directories and prunes everything else in single- and
multithreaded mode. Absolute/'..' entries and missing files are hard
CLI errors.
- --filter=RULE: rsync-style +/- rules (anchored '/', dir-only trailing '/',
word include/exclude forms) evaluated first-match-wins with a default of
include, as an independent layer from legacy --exclude/--include.
Unsupported directives (merge/hide/... ) are rejected explicitly. -f stays
sendfile.
- -C/--cvs-exclude: well-known rsync CVS default exclude set.
- -F: per-directory .rsync-filter files read during traversal and applied to
the owning directory's subtree (single + parallel), never transferred.
- Delete manifest still derives from what was actually sent.
Client-only config fields; no wire/protocol change. Adds unit coverage
(CLI parse, allow-set and filter scanning single+parallel) and integration
tests (TestFilesFrom, TestFilters). RSYNC_COMPAT matrix rows updated:
5 rows move to Implemented (Summary 62/3/5/1/76 = 147).
Merged to dev (342dd15; dev HEAD a196522, CI run #469 all green). Independent c-review found 1 blocker + warnings, all fixed: inner-first .rsync-filter precedence matching rsync (deeper files override shallower + base), listed-but-missing --files-from entries and empty lists now hard-error across single/-m/dry-run/list-only, source-root '/' scan regression fixed, unsupported filter syntax (modifiers, merge shorthands) rejected explicitly, NUL-mode CR/LF preserved, --no-from0/--no-cvs-exclude negatable. Closing as merged.
**Merged into dev** (HEAD 342dd15).
Merged to dev (342dd15; dev HEAD a196522, CI run #469 all green). Independent c-review found 1 blocker + warnings, all fixed: inner-first .rsync-filter precedence matching rsync (deeper files override shallower + base), listed-but-missing --files-from entries and empty lists now hard-error across single/-m/dry-run/list-only, source-root '/' scan regression fixed, unsupported filter syntax (modifiers, merge shorthands) rejected explicitly, NUL-mode CR/LF preserved, --no-from0/--no-cvs-exclude negatable. Closing as merged.
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.
Client-side file-list selection (--files-from + -0 NUL separator, allow-set gating in single + -m scan) and a filter-rule layer (--filter, -C/--cvs-exclude defaults, -F per-directory .rsync-filter) applied during scanning; independent layers with documented precedence; default behavior unchanged; no wire/protocol change. Unit + integration coverage (TestFilesFrom/TestFilters).
Merged into dev (HEAD
342dd15).Merged to dev (342dd15; dev HEAD
a196522, CI run #469 all green). Independent c-review found 1 blocker + warnings, all fixed: inner-first .rsync-filter precedence matching rsync (deeper files override shallower + base), listed-but-missing --files-from entries and empty lists now hard-error across single/-m/dry-run/list-only, source-root '/' scan regression fixed, unsupported filter syntax (modifiers, merge shorthands) rejected explicitly, NUL-mode CR/LF preserved, --no-from0/--no-cvs-exclude negatable. Closing as merged.Pull request closed