# HG changeset patch # User Martin von Zweigbergk <martinv...@google.com> # Date 1499384256 25200 # Thu Jul 06 16:37:36 2017 -0700 # Node ID 2fb74a0768a6364c5cf23eb34423c93d08278c07 # Parent 3e1accab7447b67ebb58d5b5da341e553a4cc564 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 --git a/hgext/sparse.py b/hgext/sparse.py --- a/hgext/sparse.py +++ b/hgext/sparse.py @@ -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 ('<forceincludematcher matcher=%r, includes=%r>' % + (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 ('<unionmatcher matchers=%r>' % 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 ('<negatematcher matcher=%r>' % self._matcher) def _hashmatcher(matcher): - if util.safehasattr(matcher, 'hash'): - return matcher.hash() - sha1 = hashlib.sha1() sha1.update(repr(matcher)) return sha1.hexdigest() _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel