mercurial/hg.py
changeset 20 a664c2b624cf
parent 19 12360c04fa48
child 25 daa724b27300
equal deleted inserted replaced
19:12360c04fa48 20:a664c2b624cf
   135 
   135 
   136     def merge3(self, my, other, base):
   136     def merge3(self, my, other, base):
   137         pass
   137         pass
   138 
   138 
   139 class dircache:
   139 class dircache:
   140     def __init__(self, opener):
   140     def __init__(self, opener, ui):
   141         self.opener = opener
   141         self.opener = opener
   142         self.dirty = 0
   142         self.dirty = 0
       
   143         self.ui = ui
   143         self.map = None
   144         self.map = None
   144     def __del__(self):
   145     def __del__(self):
   145         if self.dirty: self.write()
   146         if self.dirty: self.write()
   146     def __getitem__(self, key):
   147     def __getitem__(self, key):
   147         try:
   148         try:
   188     def remove(self, files):
   189     def remove(self, files):
   189         if not files: return
   190         if not files: return
   190         self.read()
   191         self.read()
   191         self.dirty = 1
   192         self.dirty = 1
   192         for f in files:
   193         for f in files:
   193             try: del self.map[f]
   194             try:
   194             except KeyError: pass
   195                 del self.map[f]
       
   196             except KeyError:
       
   197                 self.ui.warn("Not in dircache: %s\n" % f)
       
   198                 pass
   195 
   199 
   196     def clear(self):
   200     def clear(self):
   197         self.map = {}
   201         self.map = {}
   198         self.dirty = 1
   202         self.dirty = 1
   199 
   203 
   254         self.manifest = manifest(self.opener)
   258         self.manifest = manifest(self.opener)
   255         self.changelog = changelog(self.opener)
   259         self.changelog = changelog(self.opener)
   256         self.ignorelist = None
   260         self.ignorelist = None
   257 
   261 
   258         if not self.remote:
   262         if not self.remote:
   259             self.dircache = dircache(self.opener)
   263             self.dircache = dircache(self.opener, ui)
   260             try:
   264             try:
   261                 self.current = bin(self.opener("current").read())
   265                 self.current = bin(self.opener("current").read())
   262             except IOError:
   266             except IOError:
   263                 self.current = None
   267                 self.current = None
   264 
   268 
   397         new = new.keys()
   401         new = new.keys()
   398         new.sort()
   402         new.sort()
   399         if co == cn: cn = -1
   403         if co == cn: cn = -1
   400 
   404 
   401         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])
   402         edittext = self.ui.edit(edittext)
   407         edittext = self.ui.edit(edittext)
   403         n = self.changelog.add(node, new, edittext, tr, co, cn)
   408         n = self.changelog.add(node, new, edittext, tr, co, cn)
   404 
   409 
   405         tr.close()
   410         tr.close()
   406 
   411