Mercurial > public > mercurial-scm > hg
comparison mercurial/localrepo.py @ 1751:e9bf415a8ecb
localrepo: refactor the locking functions
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Sun, 19 Feb 2006 22:39:09 +0100 |
parents | 91c56c427171 |
children | 457cdec745f8 |
comparison
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) |