[PATCH 2 of 2 v2] evolve: lock the working copy early in next and prev (issue5244)
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Sun Oct 16 14:50:29 UTC 2016
On 10/16/2016 04:25 PM, Simon Farnsworth wrote:
> # HG changeset patch
> # User Simon Farnsworth <simonfar at fb.com>
> # Date 1476627823 25200
> # Sun Oct 16 07:23:43 2016 -0700
> # Node ID 99c560f7d07d3d08b83f5f1802fc329d67e5de2e
> # Parent ee284d7c5faa5d9f17853f51c17883844b985c58
> evolve: lock the working copy early in next and prev (issue5244)
>
> Both next and prev depend on a consistent working copy, but were waiting to
> take the lock until they were ready to alter the working copy.
>
> Take the lock before reading the working copy state, and do not release it
> until we're definitely not going to change the working copy.
>
> diff --git a/hgext/evolve.py b/hgext/evolve.py
> --- a/hgext/evolve.py
> +++ b/hgext/evolve.py
> @@ -2213,10 +2213,13 @@
> """update to parent revision
>
> Displays the summary line of the destination for clarity."""
> - if True:
> + wlock = None
> + dryrunopt = opts['dry_run']
> + if not dryrunopt:
> + wlock = repo.wlock()
> + try:
> wkctx = repo[None]
> wparents = wkctx.parents()
> - dryrunopt = opts['dry_run']
> if len(wparents) != 1:
> raise error.Abort('merge in progress')
> if not opts['merge']:
> @@ -2246,7 +2249,6 @@
> ret = hg.update(repo, p.rev())
> if not ret:
> tr = lock = None
> - wlock = repo.wlock()
> try:
> lock = repo.lock()
> tr = repo.transaction('previous')
> @@ -2258,6 +2260,8 @@
> tr.close()
> finally:
> lockmod.release(tr, lock, wlock)
> + wlock = None
> +
Given that we dropped the lock grabbing associated with this
try:/except: why don't we simply from that release too ? (and the
associated try:/except
(same apply for the other command)
--
Pierre-Yves David
More information about the Mercurial-devel
mailing list