Rsync parity: advanced file selection (--filter, --files-from, --cvs-exclude, --prune-empty-dirs, --relative) #129
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
FastSync supports
--exclude,--include,--max-size,--min-size. Rsync offers more powerful filtering:Missing flags
-f, --filter <RULE>— add file-filtering rule (merge-file, dir-merge, exclude, include)-C, --cvs-exclude— auto-ignore CVS conventions (.o, .obj, ~, etc.)-F— shorthand for --filter='dir-merge /.rsync-filter'--files-from <FILE>— read source file list from file (finding 7)--from0, -0— null-terminated filenames--no-implied-dirs— don't send implied dirs with --relative--prune-empty-dirs— prune empty directory chains-R, --relative— use relative path names-d, --dirs— transfer dirs without recursingCurrent code
scanner.c— BFS traversal with exclude/include patternsconfig.h— exclude_patterns/include_patterns arraysclient_cli.c:110-127— inline patterns onlyImpact
--filterenables rsync-compatible advanced filtering (e.g. --filter=':- .gitignore')--files-fromenables targeted file selection--cvs-excludeis a common developer convenience--prune-empty-dirsavoids unnecessary directory creation--relativeenables partial-path preservationImplementation notes
--filter: complex DSL, start with common rules (exclude, include, dir-merge)--files-from: read file line-by-line, each line is a path--prune-empty-dirs: remove empty dirs after scanning