docs: rsync feature compatibility matrix #199

Merged
TapTap merged 3 commits from docs/rsync-compat into dev 2026-08-02 09:20:37 +02:00
Owner

Adds RSYNC_COMPAT.md — comprehensive mapping of 141 rsync features to FastSync implementation status.

  • 44 implemented
  • ⚠️ 31 partial (flag parsed but behavior incomplete)
  • 66 not yet implemented

Includes priority recommendations for next features to implement.

Adds RSYNC_COMPAT.md — comprehensive mapping of 141 rsync features to FastSync implementation status. - ✅ 44 implemented - ⚠️ 31 partial (flag parsed but behavior incomplete) - ❌ 66 not yet implemented Includes priority recommendations for next features to implement.
TapTap added 2 commits 2026-08-02 09:01:23 +02:00
docs: add 🔀 Alt Arg status for features with different flag semantics
CI / lint (pull_request) Successful in 2m19s
CI / sanitizers (address) (pull_request) Successful in 36s
CI / sanitizers (undefined) (pull_request) Successful in 35s
CI / fuzz-build (pull_request) Successful in 14s
CI / coverage (pull_request) Successful in 32s
CI / build-and-test (pull_request) Successful in 1m15s
CI / valgrind (pull_request) Successful in 33s
0b68974b42
TapTap force-pushed docs/rsync-compat from 64a4a8345a to 0b68974b42 2026-08-02 09:01:23 +02:00 Compare
Author
Owner

PR Review

=== PR REVIEW SUMMARY ===
Branch: docs/rsync-compat
Files reviewed: 1 (RSYNC_COMPAT.md)
Issues found: 9

CRITICAL: 2
WARNING: 5
STYLE: 2

CRITICAL

[1] RSYNC_COMPAT.md:143 — -l, --links incorrectly marked
Symlink targets are never transmitted or recreated on the receiving side. FileMetadata stores mode/uid/gid/mtime — NOT the link target path. file_restore_metadata() uses chmod()/chown() which cannot create symlinks. to_disk() always creates a regular file via fwrite(). No symlink() call exists anywhere in the codebase.

Fix: Change to ⚠️ Partial — "Scanner includes symlinks; target path not transmitted"

[2] RSYNC_COMPAT.md:118 — -p, --perms incorrectly marked
-p is repurposed for SSH port (client_cli.c:69-72). --perms is never parsed — triggers "Unknown option" error. Permissions ARE preserved through -M/--preserve, but -p has different semantics.

Fix: Change to 🔀 Alt Arg — "-p means SSH port; permissions preserved via -M/--preserve"

WARNING

[3] RSYNC_COMPAT.md:162 — -c, --checksum have different semantics
-c is an alias for compression (not checksum). --checksum sets config->checksum.

Fix: Change to 🔀 Alt Arg — "-c means compression; --checksum stored and forwarded to scanner"

[4] RSYNC_COMPAT.md:190 — --address note is wrong
--address sets config->address, NOT config->bind_address. These are separate flags.

Fix: Change note to "address config field"

[5] RSYNC_COMPAT.md:85,164 — --whole-file duplicated
Appears in both Section 5 (-W, --whole-file) and Section 11 (--whole-file). Same rsync flag.

Fix: Remove one entry

[6] RSYNC_COMPAT.md:215,238 — --secluded-args duplicated
Appears in both Section 15 and Section 17. Same rsync flag.

Fix: Remove duplicate from Section 15

[7] RSYNC_COMPAT.md:9 — Summary counts don't match actuals
Actual unique rows: ~137, not 142. Counts are off by ~3.

Fix: Recount after removing duplicates

STYLE

[8] RSYNC_COMPAT.md:178 — --skip-compress note misleading
Internal skip list is hardcoded, not user-configurable like rsync's --skip-compress=LIST.

Fix: "Internal skip for hardcoded types; not user-configurable"

[9] RSYNC_COMPAT.md:86 — --block-size note incomplete
FastSync uses it for delta blocks, not checksum blocks like rsync.

Fix: "Parsed as --delta-block; controls delta transfer block size"


VERDICT

[FAIL] — 2 critical issues: -l/--links and -p/--perms incorrectly marked Implemented.

## PR Review ``` === PR REVIEW SUMMARY === Branch: docs/rsync-compat Files reviewed: 1 (RSYNC_COMPAT.md) Issues found: 9 CRITICAL: 2 WARNING: 5 STYLE: 2 ``` ### CRITICAL **[1] RSYNC_COMPAT.md:143 — `-l`, `--links` incorrectly marked ✅** Symlink targets are never transmitted or recreated on the receiving side. `FileMetadata` stores mode/uid/gid/mtime — NOT the link target path. `file_restore_metadata()` uses `chmod()`/`chown()` which cannot create symlinks. `to_disk()` always creates a regular file via `fwrite()`. No `symlink()` call exists anywhere in the codebase. > Fix: Change to ⚠️ Partial — "Scanner includes symlinks; target path not transmitted" **[2] RSYNC_COMPAT.md:118 — `-p`, `--perms` incorrectly marked ✅** `-p` is repurposed for SSH port (`client_cli.c:69-72`). `--perms` is never parsed — triggers "Unknown option" error. Permissions ARE preserved through `-M`/`--preserve`, but `-p` has different semantics. > Fix: Change to 🔀 Alt Arg — "-p means SSH port; permissions preserved via -M/--preserve" ### WARNING **[3] RSYNC_COMPAT.md:162 — `-c`, `--checksum` have different semantics** `-c` is an alias for compression (not checksum). `--checksum` sets `config->checksum`. > Fix: Change to 🔀 Alt Arg — "-c means compression; --checksum stored and forwarded to scanner" **[4] RSYNC_COMPAT.md:190 — `--address` note is wrong** `--address` sets `config->address`, NOT `config->bind_address`. These are separate flags. > Fix: Change note to "`address` config field" **[5] RSYNC_COMPAT.md:85,164 — `--whole-file` duplicated** Appears in both Section 5 (`-W`, `--whole-file`) and Section 11 (`--whole-file`). Same rsync flag. > Fix: Remove one entry **[6] RSYNC_COMPAT.md:215,238 — `--secluded-args` duplicated** Appears in both Section 15 and Section 17. Same rsync flag. > Fix: Remove duplicate from Section 15 **[7] RSYNC_COMPAT.md:9 — Summary counts don't match actuals** Actual unique rows: ~137, not 142. Counts are off by ~3. > Fix: Recount after removing duplicates ### STYLE **[8] RSYNC_COMPAT.md:178 — `--skip-compress` note misleading** Internal skip list is hardcoded, not user-configurable like rsync's `--skip-compress=LIST`. > Fix: "Internal skip for hardcoded types; not user-configurable" **[9] RSYNC_COMPAT.md:86 — `--block-size` note incomplete** FastSync uses it for delta blocks, not checksum blocks like rsync. > Fix: "Parsed as --delta-block; controls delta transfer block size" --- ### VERDICT **[FAIL]** — 2 critical issues: `-l`/`--links` and `-p`/`--perms` incorrectly marked ✅ Implemented.
TapTap added 1 commit 2026-08-02 09:14:37 +02:00
docs: fix review issues in rsync compatibility matrix
CI / lint (pull_request) Successful in 2m19s
CI / sanitizers (address) (pull_request) Successful in 37s
CI / sanitizers (undefined) (pull_request) Successful in 38s
CI / fuzz-build (pull_request) Successful in 13s
CI / coverage (pull_request) Successful in 31s
CI / build-and-test (pull_request) Successful in 1m15s
CI / valgrind (pull_request) Successful in 33s
dd11f70043
- Fix -l/--links: mark as Partial (symlink targets not transmitted)
- Fix -p/--perms: mark as Alt Arg (-p means SSH port, not perms)
- Fix -c/--checksum: mark as Alt Arg (-c means compression)
- Fix --address note: correct config field name
- Remove --whole-file duplicate (Section 5 and 11)
- Remove --secluded-args duplicate (Section 15 and 17)
- Fix --skip-compress note: clarify hardcoded, not user-configurable
- Fix --block-size note: clarify delta transfer, not checksum blocks
- Recount summary totals: 39/5/30/62 = 136 total
TapTap merged commit 98cb8e212e into dev 2026-08-02 09:20:37 +02:00
TapTap deleted branch docs/rsync-compat 2026-08-02 09:20:40 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TapTap/FastSync#199