Help with CVS related include pattern

Wayne Davison wayned at
Thu Jan 9 19:23:08 EST 2003

On Thu, Jan 09, 2003 at 12:30:30PM -0500, David Eisner wrote:
> I thought this might work:
>   rsync -av --include '*/' --include 'CVS/*' --exclude '*' src src_cvs

If things were working correctly, yes, that would indeed work.  The
problem is that the 'CVS/*' item has an interior slash, and rsync
currently interprets this as being anchored (i.e. as '/CVS/*').

Use this command to work around the problem:

  rsync -av --include '*/' --include '**/CVS/*' --exclude '*' src src_cvs

This should work in your case even though (a) "**/..." doesn't match in
the root of the transfer (which won't affect you unless you change the
"src" to "src/"), and (b) the trailing "*" gets treated like "**" (which
should have no ill effects when transferring CVS dirs since they don't
tend to have subdirs).

A previous patch of mine that replaces the matching code with something
that properly interprets "**" and "*" in the same item and also properly
floats an unanchored match term with an interior slash would have worked
as expected with your original command.  I hope to get this fix into
rsync eventually, but we've been in a "let's release soon" mode for
quite a while, and I haven't wanted to commit such a big change in the
current release cycle.


More information about the rsync mailing list