-The filenames matched against the exclude/include patterns are
-relative to the base directories, so patterns should not
-include the path elements to those base directories. The
-only way in which a pattern will match the absolute path of
-a file or directory is if the base path is the root directory.
+The filenames matched against the exclude/include patterns are relative
+to the "root of the transfer". If you think of the transfer as a
+subtree of names that are being sent from sender to receiver, the root
+is where the tree starts to be duplicated in the destination directory.
+This root governs where patterns that start with a / match (see below).
+
+Because the matching is relative to the transfer-root, changing the
+trailing slash on the source path or changing your use of the --relative
+option affects the path you need to use in your matching (in addition to
+changing how much of the file tree is duplicated on the destination
+system). The following examples demonstrate this.
+
+Let's say that we want to match a source filename that has an absolute
+path of "/home/me/foo/bar", here is how the various command choices can
+differ:
+
+verb(
+ Example cmd: rsync -a /home/me /dest
+ Source root: /home ("me" is part of transfer)
+ +/- pattern: /me/foo/bar
+ Target file: /dest/me/foo/bar
+
+ Example cmd: rsync -a /home/me/ /dest
+ Source root: /home/me (due to trailing /)
+ +/- pattern: /foo/bar (note missing "me")
+ Target file: /dest/foo/bar
+
+ Example cmd: rsync -a --relative /home/me/ /dest
+ Source root: /home/me
+ +/- pattern: /home/me/foo/bar (note full path)
+ Target file: /dest/home/me/foo/bar
+)
+
+The easiest way to see what name you should include/exclude is to just
+look at the output when using --verbose and put a / in front of the name
+(use the --dry-run option if you're not yet ready to copy any files).