comparison mercurial/hg.py @ 225:1651a3e61925

fix repo locking -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 fix repo locking We've actually got to assign the lock to a local variable, otherwise it gets released immediately. manifest hash: d55fc8858649c59ed9fa1f8cb90b63b33a71c223 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCoMERywK+sNU5EO8RAgqwAKCPhmTOK/n5bjJ6Xh4mC9Q8mJDx4wCfZBGX Uik+3sUcQRqgHjsP0fIjjiU= =U1p0 -----END PGP SIGNATURE-----
author mpm@selenic.com
date Fri, 03 Jun 2005 12:44:01 -0800
parents ccbcc4d76f81
children f57519cddd3d
comparison
equal deleted inserted replaced
224:ccbcc4d76f81 225:1651a3e61925
344 def transaction(self): 344 def transaction(self):
345 return transaction(self.opener, self.join("journal"), 345 return transaction(self.opener, self.join("journal"),
346 self.join("undo")) 346 self.join("undo"))
347 347
348 def recover(self): 348 def recover(self):
349 self.lock() 349 lock = self.lock()
350 if os.path.exists(self.join("recover")): 350 if os.path.exists(self.join("recover")):
351 self.ui.status("attempting to rollback interrupted transaction\n") 351 self.ui.status("attempting to rollback interrupted transaction\n")
352 return rollback(self.opener, self.join("recover")) 352 return rollback(self.opener, self.join("recover"))
353 else: 353 else:
354 self.ui.warn("no interrupted transaction available\n") 354 self.ui.warn("no interrupted transaction available\n")
355 355
356 def undo(self): 356 def undo(self):
357 self.lock() 357 lock = self.lock()
358 if os.path.exists(self.join("undo")): 358 if os.path.exists(self.join("undo")):
359 f = self.changelog.read(self.changelog.tip())[3] 359 f = self.changelog.read(self.changelog.tip())[3]
360 self.ui.status("attempting to rollback last transaction\n") 360 self.ui.status("attempting to rollback last transaction\n")
361 rollback(self.opener, self.join("undo")) 361 rollback(self.opener, self.join("undo"))
362 self.manifest = manifest(self.opener) 362 self.manifest = manifest(self.opener)
426 426
427 if not commit and not remove: 427 if not commit and not remove:
428 self.ui.status("nothing changed\n") 428 self.ui.status("nothing changed\n")
429 return 429 return
430 430
431 lock = self.lock()
431 tr = self.transaction() 432 tr = self.transaction()
432 433
433 # check in files 434 # check in files
434 new = {} 435 new = {}
435 linkrev = self.changelog.count() 436 linkrev = self.changelog.count()
805 def revmap(x): 806 def revmap(x):
806 return self.changelog.rev(x) 807 return self.changelog.rev(x)
807 808
808 if not generator: return 809 if not generator: return
809 changesets = files = revisions = 0 810 changesets = files = revisions = 0
810 self.lock() 811
811 source = genread(generator) 812 source = genread(generator)
813 lock = self.lock()
812 tr = self.transaction() 814 tr = self.transaction()
813 815
814 # pull off the changeset group 816 # pull off the changeset group
815 self.ui.status("adding changesets\n") 817 self.ui.status("adding changesets\n")
816 co = self.changelog.tip() 818 co = self.changelog.tip()