##// END OF EJS Templates
Annotate was being too clever trying to work in place, and triggering...
mpm@selenic.com -
r109:95699294 default
parent child Browse files
Show More
@@ -38,22 +38,18 b' class filelog(revlog):'
38 revs.reverse()
38 revs.reverse()
39 prev = []
39 prev = []
40 annotate = []
40 annotate = []
41
41 for node in revs:
42 for node in revs:
42 curr = self.read(node).splitlines(1)
43 curr = self.read(node).splitlines(1)
43 linkrev = self.linkrev(node)
44 linkrev = self.linkrev(node)
44 sm = SequenceMatcher(None, prev, curr)
45 sm = SequenceMatcher(None, prev, curr)
45 offset = 0
46 new = []
46 for o, m, n, s, t in sm.get_opcodes():
47 for o, m, n, s, t in sm.get_opcodes():
47 if o in ('insert','replace'):
48 if o == 'equal':
48 annotate[m+offset:n+offset] = \
49 new += annotate[m:n]
49 [ (linkrev, l) for l in curr[s:t]]
50 else:
50 if o == 'insert':
51 new += [(linkrev, l) for l in curr[s:t]]
51 offset += m-n
52 annotate, prev = new, curr
52 elif o == 'delete':
53 del annotate[m+offset:n+offset]
54 offset -= m-n
55 assert len(annotate) == len(curr)
56 prev = curr
57 return annotate
53 return annotate
58
54
59 class manifest(revlog):
55 class manifest(revlog):
General Comments 0
You need to be logged in to leave comments. Login now