# HG changeset patch # User Martin von Zweigbergk # Date 1499384256 25200 # Node ID d2d4b210a0409032368aee07012bb5412ea66289 # Parent 7d8d2da4516c1f2d674ad9e78aa503d565838dfd sparse: override __repr__ in matchers sparse.py in FB's hg-experimental repo switched to using __repr__ for non-sparse matchers soon after hg core started overriding __repr__ in the matchers in match.py (because the core matchers also stopped having "includepat" and other attributes that sparse used to depend on). Let's finish that migration by implementing __repr__ in the sparse matchers as well. That also lets us remove the special handling of them in _hashmatcher(). diff -r 7d8d2da4516c -r d2d4b210a040 hgext/sparse.py --- a/hgext/sparse.py Thu Jul 06 14:17:02 2017 -0700 +++ b/hgext/sparse.py Thu Jul 06 16:37:36 2017 -0700 @@ -928,12 +928,9 @@ def prefix(self): return False - def hash(self): - sha1 = hashlib.sha1() - sha1.update(_hashmatcher(self._matcher)) - for include in sorted(self._includes): - sha1.update(include + '\0') - return sha1.hexdigest() + def __repr__(self): + return ('' % + (self._matcher, sorted(self._includes))) class unionmatcher(object): """A matcher that is the union of several matchers.""" @@ -961,11 +958,8 @@ def prefix(self): return False - def hash(self): - sha1 = hashlib.sha1() - for m in self._matchers: - sha1.update(_hashmatcher(m)) - return sha1.hexdigest() + def __repr__(self): + return ('' % self._matchers) class negatematcher(object): def __init__(self, matcher): @@ -986,16 +980,10 @@ def anypats(self): return True - def hash(self): - sha1 = hashlib.sha1() - sha1.update('negate') - sha1.update(_hashmatcher(self._matcher)) - return sha1.hexdigest() + def __repr__(self): + return ('' % self._matcher) def _hashmatcher(matcher): - if util.safehasattr(matcher, 'hash'): - return matcher.hash() - sha1 = hashlib.sha1() sha1.update(repr(matcher)) return sha1.hexdigest()