I develop GNU Parallel. GNU Parallel uses rsync to transfer files. GNU Parallel has a design goal of not requiring the users to change their setup to be able to use GNU Parallel. In other words: If you are called as a consultant to work on a Centos3 server untouched since 2007, then you can expect even the newest version of GNU Parallel will work flawlessly.
Centos3 has rsync 2.5.7 installed. On my development machine I have so far been using rsync prior to 3.1.0 and there has been no hiccups: Rsync has worked flawlessly against Centos3. Yesterday I upgraded my development machine, which also upgraded rsync to 3.1.0. This breaks rsync against Centos3. I get the following error: rsync-3.1.0 protocol version mismatch - is your shell clean? rsync-3.1.0 (see the rsync man page for an explanation) rsync-3.1.0 rsync error: protocol incompatibility (code 2) at compat.c(62) rsync-3.1.0 rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync-3.1.0 rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.0] This is also the case for 3.1.1: rsync-3.1.1 protocol version mismatch - is your shell clean? rsync-3.1.1 (see the rsync man page for an explanation) rsync-3.1.1 rsync error: protocol incompatibility (code 2) at compat.c(62) rsync-3.1.1 rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync-3.1.1 rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1] But this is not the case for 3.0.[0-9]: They all work fine against rsync 2.5.7. The workaround seems to be adding --protocol 30 if you are running rsync 3.1.x against 2.5.7, but that workaround fails when running 2.5.7 against 2.5.7, so it cannot always be used: [centos3]$ rsync --protocol 30 /tmp/foo localhost: rsync: --protocol: unknown option rsync error: syntax or usage error (code 1) at main.c(994) Obviously as a consultant you cannot require the customer to neither upgrade nor downgrade their rsync installation, just so that you can use GNU Parallel. I am quite surprised that rsync-3.1.x does not simply negotiate the protocol and downgrade to protocol 30 automatically when 31 fails. And I find the error message could be more helpful in finding the workaround. My question is now: What should I do as a developer? How do I make sure that GNU Parallel's use of rsync never fails because of protocol issues when I cannot predict which version of rsync is used by the remote machine? If this is a bug that will be fixed in 3.1.2, then that solves it for future versions. But there will still be machines with 3.1.[0-1] out there for years to come. How do your recommend I support those in GNU Parallel? Do you have a compatibility matrix between all version of rsync? Are other incompatibilities (that will be turned on by default and which does not get negotiated with the remote) planned? /Ole -- Please use reply-all for most replies to avoid omitting the mailing list. To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html