From 382b79212b0eb345bf7f8452389ca5165fb75f05 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann Date: Thu, 21 Jan 2016 14:24:32 +0100 Subject: [PATCH] Reformat pattern syntax descriptions as definition list There are already three different styles and a fourth will be added. A definition list is easier to navigate when trying to find the description of a specific style. --- borg/archiver.py | 51 +++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/borg/archiver.py b/borg/archiver.py index 62f00f503..a076f7fa0 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -628,38 +628,41 @@ class Archiver: helptext = {} helptext['patterns'] = textwrap.dedent(''' - Exclusion patterns support three separate styles, fnmatch, regular + Exclusion patterns support four separate styles, fnmatch, shell, regular expressions and path prefixes. If followed by a colon (':') the first two characters of a pattern are used as a style selector. Explicit style selection is necessary when a non-default style is desired or when the desired pattern starts with two alphanumeric characters followed by a colon (i.e. `aa:something/*`). - `Fnmatch `_ patterns use - a variant of shell pattern syntax, with '*' matching any number of - characters, '?' matching any single character, '[...]' matching any single - character specified, including ranges, and '[!...]' matching any character - not specified. The style selector is `fm`. For the purpose of these patterns, - the path separator ('\\' for Windows and '/' on other systems) is not treated - specially. For a path to match a pattern, it must completely match from start - to end, or must match from the start to just before a path separator. Except - for the root path, paths will never end in the path separator when matching - is attempted. Thus, if a given pattern ends in a path separator, a '*' is - appended before matching is attempted. + `Fnmatch `_, selector `fm:` - Regular expressions similar to those found in Perl are supported with the - selection prefix `re:`. Unlike shell patterns regular expressions are not - required to match the complete path and any substring match is sufficient. It - is strongly recommended to anchor patterns to the start ('^'), to the end - ('$') or both. Path separators ('\\' for Windows and '/' on other systems) in - paths are always normalized to a forward slash ('/') before applying - a pattern. The regular expression syntax is described in the `Python - documentation for the re module - `_. + These patterns use a variant of shell pattern syntax, with '*' matching + any number of characters, '?' matching any single character, '[...]' + matching any single character specified, including ranges, and '[!...]' + matching any character not specified. For the purpose of these patterns, + the path separator ('\\' for Windows and '/' on other systems) is not + treated specially. For a path to match a pattern, it must completely + match from start to end, or must match from the start to just before + a path separator. Except for the root path, paths will never end in the + path separator when matching is attempted. Thus, if a given pattern ends + in a path separator, a '*' is appended before matching is attempted. - Prefix path patterns can be selected with the prefix `pp:`. This pattern - style is useful to match whole sub-directories. The pattern `pp:/data/bar` - matches `/data/bar` and everything therein. + Regular expressions, selector `re:` + + Regular expressions similar to those found in Perl are supported. Unlike + shell patterns regular expressions are not required to match the complete + path and any substring match is sufficient. It is strongly recommended to + anchor patterns to the start ('^'), to the end ('$') or both. Path + separators ('\\' for Windows and '/' on other systems) in paths are + always normalized to a forward slash ('/') before applying a pattern. The + regular expression syntax is described in the `Python documentation for + the re module `_. + + Prefix path, selector `pp:` + + This pattern style is useful to match whole sub-directories. The pattern + `pp:/data/bar` matches `/data/bar` and everything therein. Exclusions can be passed via the command line option `--exclude`. When used from within a shell the patterns should be quoted to protect them from