Переглянути джерело

Revert "Merge pull request #2401 from ThomasWaldmann/patterns-style-default-1.0"

This reverts commit 7a4e9e7a6f63afcb0dd39791ae4ba491e814c244, reversing
changes made to b007808706801b561d406a0bcc0d2db2b000fb93.
Marian Beermann 8 роки тому
батько
коміт
173ecfddb4
3 змінених файлів з 12 додано та 55 видалено
  1. 1 3
      borg/archiver.py
  2. 11 26
      borg/helpers.py
  3. 0 26
      borg/testsuite/helpers.py

+ 1 - 3
borg/archiver.py

@@ -1025,7 +1025,7 @@ class Archiver:
 
         Note that the default pattern style for `--pattern` and `--patterns-from` is
         shell style (`sh:`), so those patterns behave similar to rsync include/exclude
-        patterns. The pattern style can be set via the `P` prefix.
+        patterns.
 
         Patterns (`--pattern`) and excludes (`--exclude`) from the command line are
         considered first (in the order of appearance). Then patterns from `--patterns-from`
@@ -1033,8 +1033,6 @@ class Archiver:
 
         An example `--patterns-from` file could look like that::
 
-            # "sh:" pattern style is the default, so the following line is not needed:
-            P sh
             R /
             # can be rebuild
             - /home/*/.cache

+ 11 - 26
borg/helpers.py

@@ -346,23 +346,18 @@ def parse_timestamp(timestamp):
         return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc)
 
 
-def parse_add_pattern(patternstr, roots, patterns, fallback):
+def parse_add_pattern(patternstr, roots, patterns):
     """Parse a pattern string and add it to roots or patterns depending on the pattern type."""
-    pattern = parse_inclexcl_pattern(patternstr, fallback=fallback)
+    pattern = parse_inclexcl_pattern(patternstr)
     if pattern.ptype is RootPath:
         roots.append(pattern.pattern)
-    elif pattern.ptype is PatternStyle:
-        fallback = pattern.pattern
     else:
         patterns.append(pattern)
-    return fallback
 
 
-def load_pattern_file(fileobj, roots, patterns, fallback=None):
-    if fallback is None:
-        fallback = ShellPattern  # ShellPattern is defined later in this module
+def load_pattern_file(fileobj, roots, patterns):
     for patternstr in clean_lines(fileobj):
-        fallback = parse_add_pattern(patternstr, roots, patterns, fallback)
+        parse_add_pattern(patternstr, roots, patterns)
 
 
 def load_exclude_file(fileobj, patterns):
@@ -375,7 +370,7 @@ class ArgparsePatternAction(argparse.Action):
         super().__init__(nargs=nargs, **kw)
 
     def __call__(self, parser, args, values, option_string=None):
-        parse_add_pattern(values[0], args.paths, args.patterns, ShellPattern)
+        parse_add_pattern(values[0], args.paths, args.patterns)
 
 
 class ArgparsePatternFileAction(argparse.Action):
@@ -571,14 +566,6 @@ _PATTERN_STYLE_BY_PREFIX = dict((i.PREFIX, i) for i in _PATTERN_STYLES)
 
 InclExclPattern = namedtuple('InclExclPattern', 'pattern ptype')
 RootPath = object()
-PatternStyle = object()
-
-
-def get_pattern_style(prefix):
-    try:
-        return _PATTERN_STYLE_BY_PREFIX[prefix]
-    except KeyError:
-        raise ValueError("Unknown pattern style: {}".format(prefix)) from None
 
 
 def parse_pattern(pattern, fallback=FnmatchPattern):
@@ -586,9 +573,14 @@ def parse_pattern(pattern, fallback=FnmatchPattern):
     """
     if len(pattern) > 2 and pattern[2] == ":" and pattern[:2].isalnum():
         (style, pattern) = (pattern[:2], pattern[3:])
-        cls = get_pattern_style(style)
+
+        cls = _PATTERN_STYLE_BY_PREFIX.get(style, None)
+
+        if cls is None:
+            raise ValueError("Unknown pattern style: {}".format(style))
     else:
         cls = fallback
+
     return cls(pattern)
 
 
@@ -606,8 +598,6 @@ def parse_inclexcl_pattern(pattern, fallback=ShellPattern):
         '+': True,
         'R': RootPath,
         'r': RootPath,
-        'P': PatternStyle,
-        'p': PatternStyle,
     }
     try:
         ptype = type_prefix_map[pattern[0]]
@@ -618,11 +608,6 @@ def parse_inclexcl_pattern(pattern, fallback=ShellPattern):
         raise argparse.ArgumentTypeError("Unable to parse pattern: {}".format(pattern))
     if ptype is RootPath:
         pobj = pattern
-    elif ptype is PatternStyle:
-        try:
-            pobj = get_pattern_style(pattern)
-        except ValueError:
-            raise argparse.ArgumentTypeError("Unable to parse pattern: {}".format(pattern))
     else:
         pobj = parse_pattern(pattern, fallback)
     return InclExclPattern(pobj, ptype)

+ 0 - 26
borg/testsuite/helpers.py

@@ -494,32 +494,6 @@ def test_load_patterns_from_file(tmpdir, lines, expected_roots, expected_numpatt
     assert numpatterns == expected_numpatterns
 
 
-def test_switch_patterns_style():
-    patterns = """\
-        +0_initial_default_is_shell
-        p fm
-        +1_fnmatch
-        P re
-        +2_regex
-        +3_more_regex
-        P pp
-        +4_pathprefix
-        p fm
-        p sh
-        +5_shell
-    """
-    pattern_file = StringIO(patterns)
-    roots, patterns = [], []
-    load_pattern_file(pattern_file, roots, patterns)
-    assert len(patterns) == 6
-    assert isinstance(patterns[0].pattern, ShellPattern)
-    assert isinstance(patterns[1].pattern, FnmatchPattern)
-    assert isinstance(patterns[2].pattern, RegexPattern)
-    assert isinstance(patterns[3].pattern, RegexPattern)
-    assert isinstance(patterns[4].pattern, PathPrefixPattern)
-    assert isinstance(patterns[5].pattern, ShellPattern)
-
-
 @pytest.mark.parametrize("lines", [
     (["X /data"]),  # illegal pattern type prefix
     (["/data"]),    # need a pattern type prefix