Mercurial > hg
view mercurial/match.py @ 7104:9514cbb6e4f6
bdiff: normalize the diff (issue1295)
When the common part of a diff can be moved forward, move it forward.
Otherwise we don't get deterministic results (it would depends on the way we
split for the recursion).
That way we get identical hunks when doing the same change, it helps to solve
issue1295 (inconsistent diffs on different side during a merge).
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Tue, 14 Oct 2008 20:13:53 +0200 |
parents | cbdfd08eabc9 |
children | 08e1baf924ca |
line wrap: on
line source
import util class _match(object): def __init__(self, root, cwd, files, mf, ap): self._root = root self._cwd = cwd self._files = files self._fmap = dict.fromkeys(files) self.matchfn = mf self._anypats = ap def __call__(self, fn): return self.matchfn(fn) def __iter__(self): for f in self._files: yield f def bad(self, f, msg): return True def dir(self, f): pass def missing(self, f): pass def exact(self, f): return f in self._fmap def rel(self, f): return util.pathto(self._root, self._cwd, f) def files(self): return self._files def anypats(self): return self._anypats class always(_match): def __init__(self, root, cwd): _match.__init__(self, root, cwd, [], lambda f: True, False) class never(_match): def __init__(self, root, cwd): _match.__init__(self, root, cwd, [], lambda f: False, False) class exact(_match): def __init__(self, root, cwd, files): _match.__init__(self, root, cwd, files, lambda f: f in files, False) class match(_match): def __init__(self, root, cwd, patterns, include, exclude, default): f, mf, ap = util.matcher(root, cwd, patterns, include, exclude, None, default) _match.__init__(self, root, cwd, f, mf, ap)