Implements five rsync-compatible flags across 15 files:
-a/--archive: enables -c -m -M (compression + multithreading + metadata). Does NOT enable -s (chunk serialization) since that slows transfers.
-n/--dry-run: scans source and prints what would be transferred without connecting.
-p : custom SSH port, passed as -p to the ssh subprocess. Switched from execlp to execvp for dynamic args.
--exclude : glob-based filename filtering (supports * and ?) in the scanner.
--delete: sender collects a manifest of all transferred files; receiver walks the destination tree and deletes anything not in the manifest.
Protocol: added STATUS_MANIFEST and use_delete field to Config wire format.
New utilities in utils.c: glob_match(), delete_extras() with recursive directory walk.
Builds clean (zero new warnings), all 7 tests pass.
Implements five rsync-compatible flags across 15 files:
- **-a/--archive**: enables -c -m -M (compression + multithreading + metadata). Does NOT enable -s (chunk serialization) since that slows transfers.
- **-n/--dry-run**: scans source and prints what would be transferred without connecting.
- **-p <port>**: custom SSH port, passed as -p to the ssh subprocess. Switched from execlp to execvp for dynamic args.
- **--exclude <pattern>**: glob-based filename filtering (supports * and ?) in the scanner.
- **--delete**: sender collects a manifest of all transferred files; receiver walks the destination tree and deletes anything not in the manifest.
Protocol: added STATUS_MANIFEST and use_delete field to Config wire format.
New utilities in utils.c: glob_match(), delete_extras() with recursive directory walk.
Builds clean (zero new warnings), all 7 tests pass.
Feature changes across 15 files:
- -a/--archive: enables -c -m -M (no -s, which slows transfers)
- -n/--dry-run: scan + print without connecting or transferring
- -p <port>: custom SSH port (passed as -p to ssh via execvp)
- --exclude <pattern>: glob-based filename filtering in scanner
- --delete: sender collects file manifest; receiver deletes unlisted files
Protocol: added STATUS_MANIFEST, use_delete field in Config wire format.
New utilities: glob_match(), delete_extras() with recursive directory walk.
Scanner: accepts exclude patterns; skips matching entries.
SSH transport: switched from execlp to execvp for dynamic port arg.
Server + multiprocessing: handle STATUS_MANIFEST in both single and
multithreaded receive paths.
Builds clean, all 7 tests pass.
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.
Implements five rsync-compatible flags across 15 files:
Protocol: added STATUS_MANIFEST and use_delete field to Config wire format.
New utilities in utils.c: glob_match(), delete_extras() with recursive directory walk.
Builds clean (zero new warnings), all 7 tests pass.