parity: answer STATUS_MKDIR/STATUS_SYMLINK with destination state (-i/--progress/--out-format) #314

Closed
opened 2026-09-23 02:10:49 +02:00 by TapTap · 1 comment
Owner

The sender never probes a directory's/symlink's destination state, so every non-root dir renders cd+++++++++ and re-runs over-name symlinks/empty dirs. This keeps -i/--itemize-changes and --progress at ⚠️.

Work: answer STATUS_MKDIR/STATUS_SYMLINK with the same STATUS_DEST_INFO snapshot the regular-file STATUS_CHECK path already emits (keyed on report_dest_info), and have client_report.c consume it. This closes two ⚠️ rows.

Files: src/server/receiver.c (mkdir/symlink handlers), src/shared/protocol.h, src/shared/format.c, src/client/client_report.c. Wire: extend the existing STATUS_DEST_INFO to dir/symlink; bump protocol.

The sender never probes a directory's/symlink's destination state, so every non-root dir renders `cd+++++++++` and re-runs over-name symlinks/empty dirs. This keeps `-i/--itemize-changes` and `--progress` at ⚠️. **Work:** answer `STATUS_MKDIR`/`STATUS_SYMLINK` with the same `STATUS_DEST_INFO` snapshot the regular-file `STATUS_CHECK` path already emits (keyed on `report_dest_info`), and have `client_report.c` consume it. This closes two ⚠️ rows. Files: `src/server/receiver.c` (mkdir/symlink handlers), `src/shared/protocol.h`, `src/shared/format.c`, `src/client/client_report.c`. Wire: extend the existing `STATUS_DEST_INFO` to dir/symlink; bump protocol.
TapTap added the enhancement label 2026-09-23 02:10:49 +02:00
Author
Owner

Fixed in PR #327 (protocol 2.30.0). STATUS_MKDIR/STATUS_SYMLINK now carry a destination-state probe (with target_matches on STATUS_DEST_INFO); -i/--out-format/--progress render rsync's .d..t....../cLc........ and suppress unchanged dirs/symlinks, in both the sequential and --threads paths and the --chunk-serialization path. Differential-tested against rsync 3.4.1. Residual: the unconditional root ./ line. Closing as completed.

Fixed in PR #327 (protocol 2.30.0). `STATUS_MKDIR`/`STATUS_SYMLINK` now carry a destination-state probe (with `target_matches` on `STATUS_DEST_INFO`); `-i`/`--out-format`/`--progress` render rsync's `.d..t......`/`cLc........` and suppress unchanged dirs/symlinks, in both the sequential and `--threads` paths and the `--chunk-serialization` path. Differential-tested against rsync 3.4.1. Residual: the unconditional root `./` line. Closing as completed.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TapTap/FastSync#314