del transaction before lock before wlock
This way rollbacks happen while the repo is still locked.
Deleting lock before wlock is not strictly necessary, but is
more consistent with the locking order.
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -455,7 +455,7 @@ class queue:
repo.dirstate.invalidate()
raise
finally:
- del lock, wlock, tr
+ del tr, lock, wlock
def _apply(self, repo, series, list=False, update_status=True,
strict=False, patchdir=None, merge=None, all_files={}):
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1623,7 +1623,7 @@ def import_(ui, repo, patch1, *patches,
finally:
os.unlink(tmpname)
finally:
- del wlock, lock
+ del lock, wlock
def incoming(ui, repo, source="default", **opts):
"""show new changesets found in source
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -544,7 +544,7 @@ class localrepository(repo.repository):
else:
self.ui.warn(_("no rollback information available\n"))
finally:
- del wlock, lock
+ del lock, wlock
def invalidate(self):
for a in "changelog manifest".split():
@@ -820,7 +820,7 @@ class localrepository(repo.repository):
self.hook("commit", node=hex(n), parent1=xp1, parent2=xp2)
return n
finally:
- del lock, wlock, tr
+ del tr, lock, wlock
def walk(self, node=None, files=[], match=util.always, badmatch=None):
'''