From patchwork Fri Aug 15 11:32:12 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2, of, 5] largefiles: put whole "hgmerge" process into the same "wlock" scope From: Katsunori FUJIWARA X-Patchwork-Id: 5408 Message-Id: To: mercurial-devel@selenic.com Date: Fri, 15 Aug 2014 20:32:12 +0900 # HG changeset patch # User FUJIWARA Katsunori # Date 1408102131 -32400 # Fri Aug 15 20:28:51 2014 +0900 # Node ID c257a3b4fe4190c1b6cda43ca29a589b9be3fde7 # Parent 0dff07b4d9d070825c83b47a672b316aab22bae7 largefiles: put whole "hgmerge" process into the same "wlock" scope Before this patch, there are two distinct "wlock" scopes below in "hgmerge": 1. "merge.update" via original "hg.merge" function 2. "updatelfiles" specific "wlock" scope (to synchronize largefile dirstate) But these should be executed in the same "wlock" scope for consistency, because user of "hg.merge" doesn't get "wlock" explicitly before invocation of it. - merge in commands This patch puts almost all original "hgmerge" implementation into "_hgmerge" to reduce changes. diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -717,6 +717,13 @@ return result def hgmerge(orig, repo, node, force=None, remind=True): + wlock = repo.wlock() + try: + return _hgmerge(orig, repo, node, force, remind) + finally: + wlock.release() + +def _hgmerge(orig, repo, node, force, remind): result = orig(repo, node, force, remind) lfcommands.updatelfiles(repo.ui, repo) return result