78 def read(self, node): |
78 def read(self, node): |
79 if self.mapcache and self.mapcache[0] == node: |
79 if self.mapcache and self.mapcache[0] == node: |
80 return self.mapcache[1] |
80 return self.mapcache[1] |
81 text = self.revision(node) |
81 text = self.revision(node) |
82 map = {} |
82 map = {} |
83 self.listcache = text.splitlines(1) |
83 self.listcache = (text, text.splitlines(1)) |
84 for l in self.listcache: |
84 for l in self.listcache[1]: |
85 (f, n) = l.split('\0') |
85 (f, n) = l.split('\0') |
86 map[f] = bin(n[:40]) |
86 map[f] = bin(n[:40]) |
87 self.mapcache = (node, map) |
87 self.mapcache = (node, map) |
88 return map |
88 return map |
89 |
89 |
90 def diff(self, a, b): |
90 def diff(self, a, b): |
91 # this is sneaky, as we're not actually using a and b |
91 # this is sneaky, as we're not actually using a and b |
92 if self.listcache: |
92 if self.listcache and len(self.listcache[0]) == len(a): |
93 return mdiff.diff(self.listcache, self.addlist, 1) |
93 return mdiff.diff(self.listcache[1], self.addlist, 1) |
94 else: |
94 else: |
95 return mdiff.diff(a, b) |
95 return mdiff.diff(a, b) |
96 |
96 |
97 def add(self, map, transaction, link, p1=None, p2=None): |
97 def add(self, map, transaction, link, p1=None, p2=None): |
98 files = map.keys() |
98 files = map.keys() |
101 self.addlist = ["%s\000%s\n" % (f, hex(map[f])) for f in files] |
101 self.addlist = ["%s\000%s\n" % (f, hex(map[f])) for f in files] |
102 text = "".join(self.addlist) |
102 text = "".join(self.addlist) |
103 |
103 |
104 n = self.addrevision(text, transaction, link, p1, p2) |
104 n = self.addrevision(text, transaction, link, p1, p2) |
105 self.mapcache = (n, map) |
105 self.mapcache = (n, map) |
106 self.listcache = self.addlist |
106 self.listcache = (text, self.addlist) |
107 |
107 |
108 return n |
108 return n |
109 |
109 |
110 class changelog(revlog): |
110 class changelog(revlog): |
111 def __init__(self, opener): |
111 def __init__(self, opener): |
401 new = new.keys() |
401 new = new.keys() |
402 new.sort() |
402 new.sort() |
403 if co == cn: cn = -1 |
403 if co == cn: cn = -1 |
404 |
404 |
405 edittext = "\n"+"".join(["HG: changed %s\n" % f for f in new]) |
405 edittext = "\n"+"".join(["HG: changed %s\n" % f for f in new]) |
406 edittext += "".join(["HG: removed %s\n" % f for f in remove]) |
|
407 edittext = self.ui.edit(edittext) |
406 edittext = self.ui.edit(edittext) |
408 n = self.changelog.add(node, new, edittext, tr, co, cn) |
407 n = self.changelog.add(node, new, edittext, tr, co, cn) |
409 |
408 |
410 tr.close() |
409 tr.close() |
411 |
410 |
444 # add changeset |
443 # add changeset |
445 new = new.keys() |
444 new = new.keys() |
446 new.sort() |
445 new.sort() |
447 |
446 |
448 edittext = text + "\n"+"".join(["HG: changed %s\n" % f for f in new]) |
447 edittext = text + "\n"+"".join(["HG: changed %s\n" % f for f in new]) |
|
448 edittext += "".join(["HG: removed %s\n" % f for f in remove]) |
449 edittext = self.ui.edit(edittext) |
449 edittext = self.ui.edit(edittext) |
450 |
450 |
451 n = self.changelog.add(mnode, new, edittext, tr) |
451 n = self.changelog.add(mnode, new, edittext, tr) |
452 tr.close() |
452 tr.close() |
453 |
453 |