[PATCH 1 of 4] commands: add missing wlock to backout

Idan Kamara idankk86 at gmail.com
Thu Apr 19 10:31:48 CDT 2012


# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1334847563 -10800
# Branch stable
# Node ID e1bb6f88a73a34b8d9848fa9cd69895e388657b5
# Parent  775664649c0dd24cb95dc387cfcbf298d1df0e1e
commands: add missing wlock to backout

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -449,42 +449,46 @@
         parent = p1
 
     # the backout should appear on the same branch
-    branch = repo.dirstate.branch()
-    hg.clean(repo, node, show_stats=False)
-    repo.dirstate.setbranch(branch)
-    revert_opts = opts.copy()
-    revert_opts['date'] = None
-    revert_opts['all'] = True
-    revert_opts['rev'] = hex(parent)
-    revert_opts['no_backup'] = None
-    revert(ui, repo, **revert_opts)
-    if not opts.get('merge') and op1 != node:
-        try:
-            ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
-            return hg.update(repo, op1)
-        finally:
-            ui.setconfig('ui', 'forcemerge', '')
-
-    commit_opts = opts.copy()
-    commit_opts['addremove'] = False
-    if not commit_opts['message'] and not commit_opts['logfile']:
-        # we don't translate commit messages
-        commit_opts['message'] = "Backed out changeset %s" % short(node)
-        commit_opts['force_editor'] = True
-    commit(ui, repo, **commit_opts)
-    def nice(node):
-        return '%d:%s' % (repo.changelog.rev(node), short(node))
-    ui.status(_('changeset %s backs out changeset %s\n') %
-              (nice(repo.changelog.tip()), nice(node)))
-    if opts.get('merge') and op1 != node:
-        hg.clean(repo, op1, show_stats=False)
-        ui.status(_('merging with changeset %s\n')
-                  % nice(repo.changelog.tip()))
-        try:
-            ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
-            return hg.merge(repo, hex(repo.changelog.tip()))
-        finally:
-            ui.setconfig('ui', 'forcemerge', '')
+    wlock = repo.wlock()
+    try:
+        branch = repo.dirstate.branch()
+        hg.clean(repo, node, show_stats=False)
+        repo.dirstate.setbranch(branch)
+        revert_opts = opts.copy()
+        revert_opts['date'] = None
+        revert_opts['all'] = True
+        revert_opts['rev'] = hex(parent)
+        revert_opts['no_backup'] = None
+        revert(ui, repo, **revert_opts)
+        if not opts.get('merge') and op1 != node:
+            try:
+                ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
+                return hg.update(repo, op1)
+            finally:
+                ui.setconfig('ui', 'forcemerge', '')
+
+        commit_opts = opts.copy()
+        commit_opts['addremove'] = False
+        if not commit_opts['message'] and not commit_opts['logfile']:
+            # we don't translate commit messages
+            commit_opts['message'] = "Backed out changeset %s" % short(node)
+            commit_opts['force_editor'] = True
+        commit(ui, repo, **commit_opts)
+        def nice(node):
+            return '%d:%s' % (repo.changelog.rev(node), short(node))
+        ui.status(_('changeset %s backs out changeset %s\n') %
+                  (nice(repo.changelog.tip()), nice(node)))
+        if opts.get('merge') and op1 != node:
+            hg.clean(repo, op1, show_stats=False)
+            ui.status(_('merging with changeset %s\n')
+                      % nice(repo.changelog.tip()))
+            try:
+                ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
+                return hg.merge(repo, hex(repo.changelog.tip()))
+            finally:
+                ui.setconfig('ui', 'forcemerge', '')
+    finally:
+        wlock.release()
     return 0
 
 @command('bisect',


More information about the Mercurial-devel mailing list