mercurial/localrepo.py
changeset 1784 2e0a288ca93e
parent 1782 b9671b41e360
child 1789 d5248726d22f
equal deleted inserted replaced
1783:35a05f177267 1784:2e0a288ca93e
   233     def recover(self):
   233     def recover(self):
   234         l = self.lock()
   234         l = self.lock()
   235         if os.path.exists(self.join("journal")):
   235         if os.path.exists(self.join("journal")):
   236             self.ui.status(_("rolling back interrupted transaction\n"))
   236             self.ui.status(_("rolling back interrupted transaction\n"))
   237             transaction.rollback(self.opener, self.join("journal"))
   237             transaction.rollback(self.opener, self.join("journal"))
   238             self.manifest = manifest.manifest(self.opener)
   238             self.reload()
   239             self.changelog = changelog.changelog(self.opener)
       
   240             return True
   239             return True
   241         else:
   240         else:
   242             self.ui.warn(_("no interrupted transaction available\n"))
   241             self.ui.warn(_("no interrupted transaction available\n"))
   243             return False
   242             return False
   244 
   243 
   248         l = self.lock()
   247         l = self.lock()
   249         if os.path.exists(self.join("undo")):
   248         if os.path.exists(self.join("undo")):
   250             self.ui.status(_("rolling back last transaction\n"))
   249             self.ui.status(_("rolling back last transaction\n"))
   251             transaction.rollback(self.opener, self.join("undo"))
   250             transaction.rollback(self.opener, self.join("undo"))
   252             util.rename(self.join("undo.dirstate"), self.join("dirstate"))
   251             util.rename(self.join("undo.dirstate"), self.join("dirstate"))
   253             self.dirstate.read()
   252             self.reload()
       
   253             self.wreload()
   254         else:
   254         else:
   255             self.ui.warn(_("no undo information available\n"))
   255             self.ui.warn(_("no undo information available\n"))
       
   256 
       
   257     def wreload(self):
       
   258         self.dirstate.read()
       
   259 
       
   260     def reload(self):
       
   261         self.changelog.load()
       
   262         self.manifest.load()
       
   263         self.tagscache = None
       
   264         self.nodetagscache = None
   256 
   265 
   257     def do_lock(self, lockname, wait, releasefn=None, acquirefn=None):
   266     def do_lock(self, lockname, wait, releasefn=None, acquirefn=None):
   258         try:
   267         try:
   259             l = lock.lock(self.join(lockname), 0, releasefn)
   268             l = lock.lock(self.join(lockname), 0, releasefn)
   260         except lock.LockHeld, inst:
   269         except lock.LockHeld, inst:
   265         if acquirefn:
   274         if acquirefn:
   266             acquirefn()
   275             acquirefn()
   267         return l
   276         return l
   268 
   277 
   269     def lock(self, wait=1):
   278     def lock(self, wait=1):
   270         return self.do_lock("lock", wait)
   279         return self.do_lock("lock", wait, acquirefn=self.reload)
   271 
   280 
   272     def wlock(self, wait=1):
   281     def wlock(self, wait=1):
   273         return self.do_lock("wlock", wait,
   282         return self.do_lock("wlock", wait,
   274                             self.dirstate.write,
   283                             self.dirstate.write,
   275                             self.dirstate.read)
   284                             self.wreload)
   276 
   285 
   277     def checkfilemerge(self, filename, text, filelog, manifest1, manifest2):
   286     def checkfilemerge(self, filename, text, filelog, manifest1, manifest2):
   278         "determine whether a new filenode is needed"
   287         "determine whether a new filenode is needed"
   279         fp1 = manifest1.get(filename, nullid)
   288         fp1 = manifest1.get(filename, nullid)
   280         fp2 = manifest2.get(filename, nullid)
   289         fp2 = manifest2.get(filename, nullid)