X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/44d60d5f83da9595a93a6acdb3fd770d249381a4..448797a1e6b0abb1867faec4cf83c021c34b8bda:/rsync.yo?ds=sidebyside diff --git a/rsync.yo b/rsync.yo index 1f6a41cc..8aacc1e1 100644 --- a/rsync.yo +++ b/rsync.yo @@ -785,9 +785,22 @@ files listed in the CVSIGNORE environment variable (all cvsignore names are delimited by whitespace). Finally, any file is ignored if it is in the same directory as a -.cvsignore file and matches one of the patterns listed therein. +.cvsignore file and matches one of the patterns listed therein. Unlike +rsync's filter/exclude files, these patterns are split on whitespace. See the bf(cvs(1)) manual for more information. +If you're combining bf(-C) with your own bf(--filter) rules, you should +note that these CVS excludes are appended at the end of your own rules, +regardless of where the -C was placed on the command-line. This makes them +a lower priority than any rules you specified explicitly. If you want to +control where these CVS excludes get inserted into your filter rules, you +should omit the bf(-C) as a command-line option and use a combination of +bf(--filter=:C) and bf(--filter=-C) (either on your command-line or by +putting the ":C" and "-C" rules into a filter file with your other rules). +The first option turns on the per-directory scanning for the .cvsignore +file. The second option does a one-time import of the CVS excludes +mentioned above. + dit(bf(-f, --filter=RULE)) This option allows you to add rules to selectively exclude certain files from the list of files to be transferred. This is most useful in combination with a recursive transfer. @@ -1215,12 +1228,12 @@ Rsync builds an ordered list of filter rules as specified on the command-line. Filter rules have the following syntax: quote( -tt(x [RULE])nl() -tt(xMODIFIERS [RULE])nl() +tt(x [PATTERN_OR_FILE])nl() +tt(xMODIFIERS [PATTERN_OR_FILE])nl() ) The 'x' is a single-letter that specifies the kind of rule to create. It -can have trailing modifiers, and is separated from the RULE by either a +can have trailing modifiers, and is separated from its arg by either a single space or an underscore (_). Here are the available rule prefixes: quote( @@ -1228,7 +1241,7 @@ bf(-) specifies an exclude pattern. nl() bf(+) specifies an include pattern. nl() bf(.) specifies a merge-file to read for more rules. nl() bf(:) specifies a per-directory merge-file. nl() -bf(!) clears the current include/exclude list (takes no RULE) nl() +bf(!) clears the current include/exclude list (takes no arg) nl() ) Note that the bf(--include)/bf(--exclude) command-line options do not allow the @@ -1397,6 +1410,9 @@ itemize( it() A "!" specifies that the include/exclude should take effect if the pattern fails to match. For instance, "-! */" would exclude all non-directories. + it() A bf(C) is used to indicate that all the global CVS-exclude rules + should be inserted as excludes in place of the "-C". No arg should + follow. ) Per-directory rules are inherited in all subdirectories of the directory @@ -1481,10 +1497,11 @@ tt(rsync -avC --include=foo.o -f :C --exclude='*.old' a/ b)nl() Both of the above rsync commands are identical. Each one will merge all the per-directory .cvsignore rules in the middle of the list rather than at the end. This allows their dir-specific rules to supersede the rules -that follow the :C instead of being subservient to all your rules. (The -global rules taken from the $HOME/.cvsignore file and from $CVSIGNORE are -not repositioned from their spot at the end of your rules, however -- feel -free to manually include $HOME/.cvsignore elsewhere in your rules.) +that follow the :C instead of being subservient to all your rules. To +affect the other CVS exclude rules (i.e. the default list of exclusions, +the contents of $HOME/.cvsignore, and the value of $CVSIGNORE) you should +omit the bf(-C) command-line option and instead insert a "-C" rule into +your filter rules; e.g. "--filter=-C". manpagesection(LIST-CLEARING FILTER RULE)