diff --git a/rsync.yo b/rsync.yo index 0ec5e55..166b58e 100644 --- a/rsync.yo +++ b/rsync.yo @@ -2829,17 +2829,19 @@ itemization( version 2.6.7. ) -Note that, when using the bf(--recursive) (bf(-r)) option (which is implied by -bf(-a)), every subcomponent of every path is visited from the top down, so -include/exclude patterns get applied recursively to each subcomponent's -full name (e.g. to include "/foo/bar/baz" the subcomponents "/foo" and -"/foo/bar" must not be excluded). -The exclude patterns actually short-circuit the directory traversal stage -when rsync finds the files to send. If a pattern excludes a particular -parent directory, it can render a deeper include pattern ineffectual -because rsync did not descend through that excluded section of the -hierarchy. This is particularly important when using a trailing '*' rule. -For instance, this won't work: +Note that, when using the bf(--recursive) (bf(-r)) option (which is +implied by bf(-a)), every component of every pathname is visited left +to right; directories are examined before their content. In this way +include/exclude patterns are applied recursively to the full pathname +of each node in the filesystem's tree. The exclude patterns +short-circuit the directory traversal stage as rsync finds the files +to send. (E.g. to include "/foo/bar/baz", "/foo" and "/foo/bar" must +not be excluded. Excluding either prevents examination of their +content.) If a pattern excludes a particular parent directory this +will render a deeper include pattern ineffectual because rsync does +not descend through the excluded section of the hierarchy. This is +particularly important when using a trailing '*' rule. For instance, +this won't work: quote( tt(+ /some/path/this-file-will-not-be-found)nl()