The ignore lists are first loaded into a global array. Then they should be distributed onto the directory structure; all applicable patterns get referenced by a directory.
root
+-- dirA
+-- dirB
+-- dirB1
*.tmp
**~
dirA/tmp*.lst
dirB/**/*.o
root: *.tmp, **~
+-- dirA **~, tmp*.lst
+-- dirB **/*.o
+-- dirB1 **/*.o
Ignore patterns apply only to new entries, ie. entries already in the .waa-dir file get done as usual. That's why we need an "add" command:
$ fsvs ignore '/proc/*'
$ fsvs add /proc/stat
/proc/stat , but nothing else from /proc .A negative ignore-list is named take list.
The default behaviour is best described with the take-list
add = **
The storage of these values will (sometime) be done in svn:ignore and svn:recursive-ignore ; in the waa-area the format is
header: number of entries
%u\n
pattern\0\n
pattern\0\n
Whitespace are not allowed at the start of a pattern; use ./* or something similar.
As low-level library pcre is used, the given shell-patterns are translated from the shell-like syntax into PCREs.
* -> [^/]*
** -> .*
? -> .
. -> \.
\W are escaped.
1.5.9