annotate: move pair function to top level
We'll want to make this more complicated and have unit tests for it in upcoming
patches.
--- a/mercurial/context.py Thu May 25 23:20:00 2017 +0900
+++ b/mercurial/context.py Wed May 24 17:38:28 2017 -0700
@@ -969,15 +969,6 @@
def decorate(text, rev):
return ([(rev, False)] * lines(text), text)
- def pair(parent, child):
- blocks = mdiff.allblocks(parent[1], child[1], opts=diffopts)
- for (a1, a2, b1, b2), t in blocks:
- # Changed blocks ('!') or blocks made only of blank lines ('~')
- # belong to the child.
- if t == '=':
- child[0][b1:b2] = parent[0][a1:a2]
- return child
-
getlog = util.lrucachefunc(lambda x: self._repo.file(x))
def parents(f):
@@ -1054,7 +1045,7 @@
visit.pop()
curr = decorate(f.data(), f)
for p in pl:
- curr = pair(hist[p], curr)
+ curr = _annotatepair(hist[p], curr, diffopts)
if needed[p] == 1:
del hist[p]
del needed[p]
@@ -1082,6 +1073,15 @@
c = visit.pop(max(visit))
yield c
+def _annotatepair(parent, child, diffopts):
+ blocks = mdiff.allblocks(parent[1], child[1], opts=diffopts)
+ for (a1, a2, b1, b2), t in blocks:
+ # Changed blocks ('!') or blocks made only of blank lines ('~')
+ # belong to the child.
+ if t == '=':
+ child[0][b1:b2] = parent[0][a1:a2]
+ return child
+
class filectx(basefilectx):
"""A filecontext object makes access to data related to a particular
filerevision convenient."""