Yet another filter question

Karl O. Pinc kop at meme.com
Thu May 5 11:39:41 UTC 2016


On Wed, 4 May 2016 21:26:26 -0500
"Karl O. Pinc" <kop at meme.com> wrote:

> On Wed, 4 May 2016 21:09:44 -0400
> Kevin Korb <kmk at sanitarium.net> wrote:
> 
> > That wording from the man page makes almost no sense without the
> > examples directly after it (and I have read it many times and know
> > what it is saying).  

> Patch appended. (Which does not perfectly match my comments
> above.)

2nd version of the patch appended. (I also line-wrapped and filled.
This makes it harder to see the exact details of the difference,
but there's enough changes now that it does not really matter.
Use wdiff for an exact comparison.)

The wording now contains some redundancy.  Or maybe
the redundancy that was there is now more apparent.  I don't think
this is necessarily bad when explaining something that people
find confusing.

Regards,

Karl <kop at meme.com>
Free Software:  "You don't pay back, you pay forward."
                 -- Robert A. Heinlein
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()



More information about the rsync mailing list