SC-16: end-to-end sync pipeline integration - #7
Merged
Merged
Conversation
Wires SC-3/SC-4/SC-5/SC-7/SC-8 together into a real working sync for the first time. New internal/pipeline package orchestrates Sender/ Receiver over gob-encoded frames (3 types: file list, signature, delta - explicitly not rsync's real wire format, grsync-to-grsync only for now). Directories/symlinks skip the signature/delta round trip since their content already travels in the file list; regular files get the real exchange. Local-to-local and SSH-remote share identical Sender/Receiver code (in-process io.Pipe vs real Session), so the local E2E test exercises the same path the remote case uses. grsync SRC DEST actually syncs files now. Added the -p/-t/-o/-g/-l attribute flags SC-8 built the machinery for but never exposed. Real findings: - Directory attribute ordering bug: applying mtime/perms on creation gets clobbered once children are written. Fixed with a deepest-first deferred pass; verified by deliberately re-breaking it to confirm the test catches the regression. - Dropped-connection handling (sender/receiver vanishing mid-transfer) now proven to error promptly rather than hang. - Windows directories chmod to 0555/0777, not 0444/0666 like files - distinct from SC-8's file-only finding, needed for E2E correctness. Hard links and device/special files deliberately deferred (SC-8 built DetectHardLinks/ApplyHardLinks/ApplySpecialFile, unused here) - separate follow-up ticket, not an oversight. Clean on native Windows and cross-compiled Linux.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wires SC-3/SC-4/SC-5/SC-7/SC-8 together into a real working sync for the first time. New internal/pipeline package orchestrates Sender/ Receiver over gob-encoded frames (3 types: file list, signature, delta
grsync SRC DEST actually syncs files now. Added the -p/-t/-o/-g/-l attribute flags SC-8 built the machinery for but never exposed.
Real findings:
Hard links and device/special files deliberately deferred (SC-8 built DetectHardLinks/ApplyHardLinks/ApplySpecialFile, unused here) - separate follow-up ticket, not an oversight.
Clean on native Windows and cross-compiled Linux.