mercurial/localrepo.py
changeset 1751 e9bf415a8ecb
parent 1747 91c56c427171
child 1752 457cdec745f8
equal deleted inserted replaced
1748:2428e6d66f06 1751:e9bf415a8ecb
   252             util.rename(self.join("undo.dirstate"), self.join("dirstate"))
   252             util.rename(self.join("undo.dirstate"), self.join("dirstate"))
   253             self.dirstate.read()
   253             self.dirstate.read()
   254         else:
   254         else:
   255             self.ui.warn(_("no undo information available\n"))
   255             self.ui.warn(_("no undo information available\n"))
   256 
   256 
   257     def lock(self, wait=1):
   257     def do_lock(self, lockname, wait, releasefn=None, acquirefn=None):
   258         try:
   258         try:
   259             return lock.lock(self.join("lock"), 0)
   259             l = lock.lock(self.join(lockname), 0, releasefn)
   260         except lock.LockHeld, inst:
       
   261             if wait:
       
   262                 self.ui.warn(_("waiting for lock held by %s\n") % inst.args[0])
       
   263                 return lock.lock(self.join("lock"), wait)
       
   264             raise inst
       
   265 
       
   266     def wlock(self, wait=1):
       
   267         try:
       
   268             wlock = lock.lock(self.join("wlock"), 0, self.dirstate.write)
       
   269         except lock.LockHeld, inst:
   260         except lock.LockHeld, inst:
   270             if not wait:
   261             if not wait:
   271                 raise inst
   262                 raise inst
   272             self.ui.warn(_("waiting for lock held by %s\n") % inst.args[0])
   263             self.ui.warn(_("waiting for lock held by %s\n") % inst.args[0])
   273             wlock = lock.lock(self.join("wlock"), wait, self.dirstate.write)
   264             l = lock.lock(self.join(lockname), wait, releasefn)
   274         self.dirstate.read()
   265         if acquirefn:
   275         return wlock
   266             acquirefn()
       
   267         return l
       
   268 
       
   269     def lock(self, wait=1):
       
   270         return self.do_lock("lock", wait)
       
   271 
       
   272     def wlock(self, wait=1):
       
   273         return self.do_lock("wlock", wait,
       
   274                             self.dirstate.write,
       
   275                             self.dirstate.read)
   276 
   276 
   277     def checkfilemerge(self, filename, text, filelog, manifest1, manifest2):
   277     def checkfilemerge(self, filename, text, filelog, manifest1, manifest2):
   278         "determine whether a new filenode is needed"
   278         "determine whether a new filenode is needed"
   279         fp1 = manifest1.get(filename, nullid)
   279         fp1 = manifest1.get(filename, nullid)
   280         fp2 = manifest2.get(filename, nullid)
   280         fp2 = manifest2.get(filename, nullid)