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 known stay known.

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 storage 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.6.1