This seems to be a bug in rsync, namely a failure of --dry-run to report an action that would be taken without the option. Suppose foo is a directory on the local machine but a regular file on the remote machine, destination. Then the command rsync --archive --dry-run foo destination:foo will not report that anything needs to be transferred, but without the dry-run option, it will overwrite the file on the destination with the directory from the source.
