While I get error messages if the Source or Destination is invalid, I don't get one for an invalid --link-dest . A link-dest of $HOME/... works while ~/... does not.
rsync -avi --link-dest=$HOME/Desktop/folder2 ~/Desktop/folder1/ ~/Desktop/folder3/
rsync -avi --link-dest=../Desktop/folder2 ~/Desktop/folder1/ ~/Desktop/folder3/
will both hard link,
rsync -avi --link-dest=~/Desktop/folder2 ~/Desktop/folder1/ ~/Desktop/folder3/
The problem is componded by the lack of a warning message
A leading ~ is a shell expansion that only occurs at the start of an arg. If you want the shell to expand it, get rid of the '=' in the --link-dest option:
Seems like a good idea to make rsync iterate over the --*-dest args and report problems.
The version in the git repository now reports on problems with the alternate-basis directories.