D3748: import: use context manager for lock, dirstateguard, transaction
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu Jun 14 23:34:51 UTC 2018
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
A tiny side-effect is that the transaction is now closed after saving
the commit message.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D3748
AFFECTED FILES
mercurial/commands.py
CHANGE DETAILS
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -40,7 +40,6 @@
hbisect,
help,
hg,
- lock as lockmod,
logcmdutil,
merge as mergemod,
obsolete,
@@ -67,8 +66,6 @@
stringutil,
)
-release = lockmod.release
-
table = {}
table.update(debugcommandsmod.command._table)
@@ -3108,22 +3105,24 @@
raise error.Abort(_('cannot use --exact with --prefix'))
base = opts["base"]
- dsguard = lock = tr = None
msgs = []
ret = 0
with repo.wlock():
- try:
- if update:
- cmdutil.checkunfinished(repo)
- if (exact or not opts.get('force')):
- cmdutil.bailifchanged(repo)
-
- if not opts.get('no_commit'):
- lock = repo.lock()
- tr = repo.transaction('import')
- else:
- dsguard = dirstateguard.dirstateguard(repo, 'import')
+ if update:
+ cmdutil.checkunfinished(repo)
+ if (exact or not opts.get('force')):
+ cmdutil.bailifchanged(repo)
+
+ if not opts.get('no_commit'):
+ lock = repo.lock()
+ tr = repo.transaction('import')
+ dsguard = util.nullcontextmanager()
+ else:
+ lock = util.nullcontextmanager()
+ tr = util.nullcontextmanager()
+ dsguard = dirstateguard.dirstateguard(repo, 'import')
+ with lock, tr, dsguard:
parents = repo[None].parents()
for patchurl in patches:
if patchurl == '-':
@@ -3159,17 +3158,9 @@
if not haspatch:
raise error.Abort(_('%s: no diffs found') % patchurl)
- if tr:
- tr.close()
if msgs:
repo.savecommitmessage('\n* * *\n'.join(msgs))
- if dsguard:
- dsguard.close()
- return ret
- finally:
- if tr:
- tr.release()
- release(lock, dsguard)
+ return ret
@command('incoming|in',
[('f', 'force', None,
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list