Mercurial > public > mercurial-scm > hg-stable
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() |