[PATCH 2 of 5] remove: eliminate forget call on workingctx
Adrian Buehlmann
adrian at cadifra.com
Mon May 23 14:31:58 CDT 2011
On 2011-05-23 16:56, Adrian Buehlmann wrote:
> # HG changeset patch
> # User Adrian Buehlmann <adrian at cadifra.com>
> # Date 1306147863 -7200
> # Node ID cef67681abdfa654259aa380dfa92d844c73889f
> # Parent 647a8cde6157b77484e7074e295bd84415b57cd5
> remove: eliminate forget call on workingctx
>
> so we can spare use acquring wlock twice
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -3915,15 +3915,15 @@
> ret = 1
>
> if force:
> - remove, forget = modified + deleted + clean, added
> + remove = modified + deleted + clean + added
> elif after:
> - remove, forget = deleted, []
> + remove = deleted
> for f in modified + added + clean:
> ui.warn(_('not removing %s: file still exists (use -f'
> ' to force removal)\n') % m.rel(f))
> ret = 1
> else:
> - remove, forget = deleted + clean, []
> + remove = deleted + clean
> for f in modified:
> ui.warn(_('not removing %s: file is modified (use -f'
> ' to force removal)\n') % m.rel(f))
> @@ -3933,12 +3933,11 @@
> ' to force removal)\n') % m.rel(f))
> ret = 1
>
> - for f in sorted(remove + forget):
> + for f in sorted(remove):
> if ui.verbose or not m.exact(f):
> ui.status(_('removing %s\n') % m.rel(f))
>
> - repo[None].forget(forget)
> - repo[None].remove(remove, unlink=not after)
> + repo[None].remove(remove, unlink=not after, unlinkadded=False)
> return ret
>
> @command('rename|move|mv',
I don't know how I can describe this better than with the patch itself,
but I think doing a single
repo[None].remove(remove, unlink=not after, unlinkadded=False)
than calling these two
repo[None].forget(forget)
repo[None].remove(remove, unlink=not after)
is better, since both workingctx.forget and workingctx.remove each
acquire and release the wlock.
And it turns out we don't even need forget, if we agree to add this
unlinkadded parameter do remove.
So, after this patch, we acquire the wlock exactly once for 'hg remove'.
More information about the Mercurial-devel
mailing list