+@@ -979,15 +980,22 @@ The exclude and include patterns specifi
+ selection of which files to transfer and which files to skip.
+
+ Rsync builds an ordered list of include/exclude options as specified on
+-the command line. Rsync checks each file and directory
+-name against each exclude/include pattern in turn. The first matching
++the command line.
++It can also be told to check for include/exclude options in each
++directory that rsync visits during the transfer (see the section on
++MERGED EXCLUDE FILES for the details on these per-directory exclude
++files).
++
++As the list of files/directories to transfer is built, rsync checks each
++name against every exclude/include pattern in turn. The first matching
+ pattern is acted on. If it is an exclude pattern, then that file is
+ skipped. If it is an include pattern then that filename is not
+ skipped. If no matching include/exclude pattern is found then the
+ filename is not skipped.
+
+-The filenames matched against the exclude/include patterns are relative
+-to the "root of the transfer". If you think of the transfer as a
++The global include/exclude rules are anchored at the "root of the
++transfer" (as opposed to per-directory rules, which are anchored at
++the current directory). 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).
+@@ -996,7 +1004,7 @@ Because the matching is relative to the
+ trailing slash on a 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.
++host). The following examples demonstrate this.
+
+ Let's say that we want to match two source files, one with an absolute
+ path of "/home/me/foo/bar", and one with a path of "/home/you/bar/baz".
+@@ -1043,23 +1051,29 @@ because rsync did not descend through th
+ hierarchy.
+
+ Note also that the --include and --exclude options take one pattern
+-each. To add multiple patterns use the --include-from and
+---exclude-from options or multiple --include and --exclude options.
++each. To add multiple patterns use the --include-from and --exclude-from
++options or multiple --include and --exclude options. See also the
++section on MERGED EXCLUDE FILES for how to merge-files together and
++specify local rules within a hierarchy of files.
+
+-The patterns can take several forms. The rules are:
++The include/exclude patterns can take several forms. The rules are:
+
+ itemize(
+
+- it() if the pattern starts with a / then it is matched against the
+- start of the filename, otherwise it is matched against the end of
+- the filename.
+- This is the equivalent of a leading ^ in regular expressions.
+- Thus "/foo" would match a file called "foo" at the transfer-root
+- (see above for how this is different from the filesystem-root).
+- On the other hand, "foo" would match any file called "foo"
++ it() if the pattern starts with a / then it is anchored to a
++ particular spot in the hierarchy of files, otherwise it is matched
++ against the end of the pathname. This is similar to a leading ^ in
++ regular expressions.
++ Thus "/foo" would match a file called "foo" at either the "root of the
++ transfer" (for a global rule) or in the current directory (for a
++ per-directory rule).
++ An unqualified "foo" would match any file or directory named "foo"
+ anywhere in the tree because the algorithm is applied recursively from
++ the
+ top down; it behaves as if each path component gets a turn at being the
+- end of the file name.
++ end of the file name. Even the unanchored "sub/foo" would match at
++ any point in the hierarchy where a "foo" was found within a directory
++ named "sub".
+
+ it() if the pattern ends with a / then it will only match a
+ directory, not a file, link, or device.
+@@ -1072,22 +1086,31 @@ itemize(
+ single asterisk pattern "*" will stop at slashes.
+
+ it() if the pattern contains a / (not counting a trailing /) or a "**"
+- then it is matched against the full filename, including any leading
+- directory. If the pattern doesn't contain a / or a "**", then it is
++ then it is matched against the full pathname, including any leading
++ directories. If the pattern doesn't contain a / or a "**", then it is
+ matched only against the final component of the filename. Again,
+ remember that the algorithm is applied recursively so "full filename" can
+ actually be any portion of a path below the starting directory.
+
+ it() if the pattern starts with "+ " (a plus followed by a space)
+ then it is always considered an include pattern, even if specified as
+- part of an exclude option. The prefix is discarded before matching.
++ part of an exclude option. (The prefix is discarded before matching.)
+
+ it() if the pattern starts with "- " (a minus followed by a space)