Mercurial > public > mercurial-scm > hg-stable
diff mercurial/linelog.py @ 38963:6fed8b323651
linelog: add replacelines_vec for fastannotate
# no-check-commit because we're conforming to an existing interface
Differential Revision: https://phab.mercurial-scm.org/D3993
author | Augie Fackler <augie@google.com> |
---|---|
date | Mon, 30 Jul 2018 23:52:15 -0400 |
parents | 57af5ee15b35 |
children | 27a54096c92e |
line wrap: on
line diff
--- a/mercurial/linelog.py Tue Jul 31 11:29:25 2018 -0400 +++ b/mercurial/linelog.py Mon Jul 30 23:52:15 2018 -0400 @@ -280,7 +280,11 @@ self._maxrev = 0 self._lastannotate = None - def replacelines(self, rev, a1, a2, b1, b2): + def replacelines_vec(self, rev, a1, a2, blines): + return self.replacelines(rev, a1, a2, 0, len(blines), + _internal_blines=blines) + + def replacelines(self, rev, a1, a2, b1, b2, _internal_blines=None): """Replace lines [a1, a2) with lines [b1, b2).""" if self._lastannotate: # TODO(augie): make replacelines() accept a revision at @@ -315,7 +319,10 @@ # Jump to skip the insert if we're at an older revision. appendinst(_jl(rev, tgt)) for linenum in pycompat.xrange(b1, b2): - appendinst(_line(rev, linenum)) + if _internal_blines is None: + appendinst(_line(rev, linenum)) + else: + appendinst(_line(*_internal_blines[linenum])) # delete if a1 < a2: if a2 > len(ar.lines):