소스 검색

remote: introduce a dontcare flag (all values acceptable)

in some cases the value of a new parameter does not really matter,
as long as it works / there is no malfunction.

without this change, a new borg client could not commit to an old
borg server (and would fail late when trying to commit):

- when using compact=False as it does at most places

- when using cleanup_commits=True as a user might trigger by running
  borg compact --cleanup-commits

we never want a borg commit "fail late", leaving the repo in a state
with uncommitted data, thus the server shall just commit, no matter
how it handles compaction or whether it can do the cleanup.
Thomas Waldmann 7 년 전
부모
커밋
a221ca16ad
1개의 변경된 파일4개의 추가작업 그리고 2개의 파일을 삭제
  1. 4 2
      src/borg/remote.py

+ 4 - 2
src/borg/remote.py

@@ -462,6 +462,8 @@ def api(*, since, **kwargs_decorator):
                     continue
                 if 'previously' in restriction and named[name] == restriction['previously']:
                     continue
+                if restriction.get('dontcare', False):
+                    continue
 
                 raise self.RPCServerOutdated("{0} {1}={2!s}".format(f.__name__, name, named[name]),
                                              format_version(restriction['since']))
@@ -890,8 +892,8 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+.
         """actual remoting is done via self.call in the @api decorator"""
 
     @api(since=parse_version('1.0.0'),
-         compact={'since': parse_version('1.2.0a0'), 'previously': True},
-         cleanup_commits={'since': parse_version('1.2.0a0'), 'previously': False})
+         compact={'since': parse_version('1.2.0a0'), 'previously': True, 'dontcare': True},
+         cleanup_commits={'since': parse_version('1.2.0a0'), 'previously': False, 'dontcare': True})
     def commit(self, save_space=False, compact=True, cleanup_commits=False):
         """actual remoting is done via self.call in the @api decorator"""