Developers' reference

Internal structure, and some explanations. More...

Internal structure, and some explanations.

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.

Todo:
Currently all patterns get tested against all new entries. This does not seem to be a performance problem.
Eg this directory tree
     root
       +-- dirA
       +-- dirB
             +-- dirB1
with these ignore patterns
        *.tmp
        **~
        dirA/tmp*.lst
        dirB/**/*.o
would result in
     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
would version /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.

     *      ->  [^/]*
     **     ->  .*
     ?      ->  .
     .      ->  \.
All other \W are escaped.

Generated for fsvs by  doxygen 1.5.9