changeset 683:6d24bd455f79 stable

simplify locking in prune
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Mon, 04 Feb 2013 17:55:03 +0100
parents 6cbb52a8401b
children 19a1a8f93c07
files hgext/evolve.py
diffstat 1 files changed, 22 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/evolve.py	Mon Feb 04 17:51:27 2013 +0100
+++ b/hgext/evolve.py	Mon Feb 04 17:55:03 2013 +0100
@@ -1255,35 +1255,33 @@
     revs = list(revs)
     revs.extend(opts['rev'])
     succs = opts['new'] + opts['succ']
+    wlock = lock = None
     wlock = repo.wlock()
     try:
         lock = repo.lock()
-        try:
-            new = set(scmutil.revrange(repo, succs))
-            targetnodes = set(scmutil.revrange(repo, revs))
-            if not targetnodes:
-                raise util.Abort('nothing to prune')
-            if new:
-                sucs = tuple(repo[n] for n in new)
-            else:
-                sucs = ()
-            markers = []
-            for n in targetnodes:
-                markers.append((repo[n], sucs))
-            createmarkers(repo, markers)
+        new = set(scmutil.revrange(repo, succs))
+        targetnodes = set(scmutil.revrange(repo, revs))
+        if not targetnodes:
+            raise util.Abort('nothing to prune')
+        if new:
+            sucs = tuple(repo[n] for n in new)
+        else:
+            sucs = ()
+        markers = []
+        for n in targetnodes:
+            markers.append((repo[n], sucs))
+        createmarkers(repo, markers)
 
-            # update to an unkilled parent
-            wdp = repo['.']
-            newnode = wdp
-            while newnode.obsolete():
-                newnode = newnode.parents()[0]
-            if newnode.node() != wdp.node():
-                commands.update(ui, repo, newnode.rev())
-                ui.status(_('working directory now at %s\n') % newnode)
-        finally:
-            lock.release()
+        # update to an unkilled parent
+        wdp = repo['.']
+        newnode = wdp
+        while newnode.obsolete():
+            newnode = newnode.parents()[0]
+        if newnode.node() != wdp.node():
+            commands.update(ui, repo, newnode.rev())
+            ui.status(_('working directory now at %s\n') % newnode)
     finally:
-        wlock.release()
+        lockmod.release(lock, wlock)
 
 @command('amend|refresh',
     [('A', 'addremove', None,