Am Dienstag, 3. April 2007 10:18 schrieb Ph. Marek:
> I'd like to release a new version (preferably tomorrow) with the ignore
> pattern changes applied, and wanted to ask you for a current set of
> patches.

I'll have a look. I didn't have time to track fsvs too closely the last 
time, currently I'm still at 1.0.16 which, hoever, works pretty good for 
me so far.

At the first glance most changes to ignore.c are documentation changes 
only, so the current patches should apply more or less as-is.

> Do you remember the last status of that thread?

Mh, I'm not sure if we reached a final conclusion that time...

My patches still "just" implement the original specification I posted.

I'll beef up the comments a bit, rediff them against HEAD and post them 
here so you can decide whether to include them into you upcoming release 
or to postpone them a bit.

There has not been any work towards your ignore changes suggested in 
http://thread.gmane.org/gmane.comp.sysutils.backup.fsvs.devel/175 so far, 
has there?

Greetings,

  Gunter


Original docs / spec:

dir_ignore
**********
changes the matching behaviour of fsvs glob-like filename patterns. With 
dir_ignore, a glob-like pattern matches the full directory-/filename 
instead of just a prefix as it currently does.
An exception are patterns which end with a slash, which will match the 
exact full directory-/filename without the slash as well as everything 
the pattern is a prefix of. This is used to exclude directories and their 
contents.

Examples:

./**/tmp
  will match all files in any subdirectory which are exactly called "tmp".
./**/tmp**
  mimics the above pattern's current semantics: match any file or
  directory whose name starts  with "tmp".
./**/tmp/
  will match all files in all directories which are called "tmp" and the
  directory itself.
./**/tmp/**
  will match all files in all directories which are called "tmp" but NOT
  the directory itself, the empty directory "tmp" won't be ignored but
  will be included in the directory

This patch works by anchoring all globbing patterns at the end of the 
line, except if they end with a slash. In this case, the PCRE is closed 
with '($|/)' which causes an exact match of the directory name to be 
ignored and everything below the directory as well.

My first try was to simply anchor all patterns except patterns ending 
in '/', but that caused all directories I wanted to ignore to be 
included. (However, without their contents.) It would have been neccessary 
to explicitely exclude the directory as well, so I changed to behaviour 
to the one explained above.

This feature has one drawback: ./**/tmp/ will also ignore all FILES which 
are exactly called "tmp", not only the dirs. :-/ However, I consider the 
overall matching behaviour with this patch to be a huge improvement over 
the current situation.


escape_mode
***********
adds support for escaping characters with a backslash '\' and for bracket 
expressions (character classes). This implementation requires the RE to 
be interpreted as a PCRE, it's not correct if the resulting RE is 
interpreted as a POSIX RE.

You can now write stuff like


  ./**/\[is[_.-]this[_.-]an_intereres*ting\*filename\?[]!]?

and it should work as expected. I implemented this as altough any pattern 
can be directly written as an PCRE of course, a globbing pattern is 
simpler to read if you eg. just want to use straight character classes. 
Additionally, much more people know how to use globbing patterns than 
PCREs. While the basics of PCREs are also simple and straight forward  
most people do not seem to know that and appear to be frightened by them.


-- 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
"Of course, just because we've heard a spine-chilling, blood-curdling 
scream of the sort to make your very marrow freeze in your bones doesn't 
automatically mean there's anything wrong."        -- (Terry Pratchett, 
Soul Music)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+                   PGP-verschlüsselte Mails bevorzugt!                 +
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Attachment: pgpjDmsvRjqjR.pgp
Description: PGP signature

Reply via email to