mercurial/hg.py
changeset 25 daa724b27300
parent 20 a664c2b624cf
child 29 4d3a5dcb6972
equal deleted inserted replaced
24:57a1eef79415 25:daa724b27300
    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