[PATCH 08 of 10 shelve-ext] shelve: migrate config overrides to ui.configoverride
Kostia Balytskyi
ikostia at fb.com
Tue Nov 29 10:23:02 EST 2016
# HG changeset patch
# User Kostia Balytskyi <ikostia at fb.com>
# Date 1480427488 28800
# Tue Nov 29 05:51:28 2016 -0800
# Node ID 85c9c651887915733feb3d385866955741f28ec0
# Parent bcf8d603cc8b678f875ceca24dd2b14eda09bce7
shelve: migrate config overrides to ui.configoverride
This patch also makes ui.quiet manipulations much more explicit
and readable, addressing previous Yuya's concerns.
diff --git a/hgext/shelve.py b/hgext/shelve.py
--- a/hgext/shelve.py
+++ b/hgext/shelve.py
@@ -355,17 +355,16 @@ def getcommitfunc(extra, interactive, ed
hasmq = util.safehasattr(repo, 'mq')
if hasmq:
saved, repo.mq.checkapplied = repo.mq.checkapplied, False
- backup = repo.ui.backupconfig('phases', 'new-commit')
try:
- repo.ui.setconfig('phases', 'new-commit', phases.secret)
- editor_ = False
- if editor:
- editor_ = cmdutil.getcommiteditor(editform='shelve.shelve',
- **opts)
- return repo.commit(message, shelveuser, opts.get('date'), match,
- editor=editor_, extra=extra)
+ overrides = {('phases', 'new-commit'): phases.secret}
+ with repo.ui.configoverride(overrides):
+ editor_ = False
+ if editor:
+ editor_ = cmdutil.getcommiteditor(editform='shelve.shelve',
+ **opts)
+ return repo.commit(message, shelveuser, opts.get('date'),
+ match, editor=editor_, extra=extra)
finally:
- repo.ui.restoreconfig(backup)
if hasmq:
repo.mq.checkapplied = saved
@@ -625,9 +624,7 @@ def unshelveabort(ui, repo, state, opts)
def mergefiles(ui, repo, wctx, shelvectx):
"""updates to wctx and merges the changes from shelvectx into the
dirstate."""
- oldquiet = ui.quiet
- try:
- ui.quiet = True
+ with ui.configoverride({('ui', 'quiet'): True}):
hg.update(repo, wctx.node())
files = []
files.extend(shelvectx.files())
@@ -642,8 +639,6 @@ def mergefiles(ui, repo, wctx, shelvectx
*pathtofiles(repo, files),
**{'no_backup': True})
ui.popbuffer()
- finally:
- ui.quiet = oldquiet
def restorebranch(ui, repo, branchtorestore):
if branchtorestore and branchtorestore != repo.dirstate.branch():
@@ -714,17 +709,16 @@ def _commitworkingcopychanges(ui, repo,
tempopts = {}
tempopts['message'] = "pending changes temporary commit"
tempopts['date'] = opts.get('date')
- ui.quiet = True
- node = cmdutil.commit(ui, repo, commitfunc, [], tempopts)
+ with ui.configoverride({('ui', 'quiet'): True}):
+ node = cmdutil.commit(ui, repo, commitfunc, [], tempopts)
tmpwctx = repo[node]
return tmpwctx, addedbefore
-def _unshelverestorecommit(ui, repo, basename, oldquiet):
+def _unshelverestorecommit(ui, repo, basename):
"""Recreate commit in the repository during the unshelve"""
- ui.quiet = True
- shelvedfile(repo, basename, 'hg').applybundle()
- shelvectx = repo['tip']
- ui.quiet = oldquiet
+ with ui.configoverride({('ui', 'quiet'): True}):
+ shelvedfile(repo, basename, 'hg').applybundle()
+ shelvectx = repo['tip']
return repo, shelvectx
def _rebaserestoredcommit(ui, repo, opts, tr, oldtiprev, basename, pctx,
@@ -890,13 +884,9 @@ def _dounshelve(ui, repo, *shelved, **op
if not shelvedfile(repo, basename, patchextension).exists():
raise error.Abort(_("shelved change '%s' not found") % basename)
- oldquiet = ui.quiet
lock = tr = None
- forcemerge = ui.backupconfig('ui', 'forcemerge')
try:
- ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 'unshelve')
lock = repo.lock()
-
tr = repo.transaction('unshelve', report=lambda x: None)
oldtiprev = len(repo)
@@ -911,16 +901,18 @@ def _dounshelve(ui, repo, *shelved, **op
tmpwctx, addedbefore = _commitworkingcopychanges(ui, repo, opts,
tmpwctx)
- repo, shelvectx = _unshelverestorecommit(ui, repo, basename, oldquiet)
+ repo, shelvectx = _unshelverestorecommit(ui, repo, basename)
branchtorestore = ''
if shelvectx.branch() != shelvectx.p1().branch():
branchtorestore = shelvectx.branch()
- shelvectx = _rebaserestoredcommit(ui, repo, opts, tr, oldtiprev,
- basename, pctx, tmpwctx, shelvectx,
- branchtorestore)
- mergefiles(ui, repo, pctx, shelvectx)
+ with ui.configoverride({('ui', 'forcemerge'): opts.get('tool', '')},
+ 'unshelve'):
+ shelvectx = _rebaserestoredcommit(ui, repo, opts, tr, oldtiprev,
+ basename, pctx, tmpwctx,
+ shelvectx, branchtorestore)
+ mergefiles(ui, repo, pctx, shelvectx)
restorebranch(ui, repo, branchtorestore)
_forgetunknownfiles(repo, shelvectx, addedbefore)
@@ -928,11 +920,9 @@ def _dounshelve(ui, repo, *shelved, **op
_finishunshelve(repo, oldtiprev, tr)
unshelvecleanup(ui, repo, basename, opts)
finally:
- ui.quiet = oldquiet
if tr:
tr.release()
lockmod.release(lock)
- ui.restoreconfig(forcemerge)
@command('shelve',
[('A', 'addremove', None,
More information about the Mercurial-devel
mailing list