[PATCH 1 of 2] histedit: dropmissing: abort on empty plan

Augie Fackler raf at durin42.com
Mon Mar 14 13:36:56 EDT 2016


On Sun, Mar 13, 2016 at 04:48:06PM -0700, Mateusz Kwapich wrote:
> # HG changeset patch
> # User Mateusz Kwapich <mitrandir at fb.com>
> # Date 1457912809 25200
> #      Sun Mar 13 16:46:49 2016 -0700
> # Node ID 397475d74e19176c668b80ebc7054310fb544418
> # Parent  ffd3ac07b1d79dda7f57bd826208fdaf92a76717
> histedit: dropmissing: abort on empty plan

Queued this, thanks. I don't have any comments to add to what timeless
and Ryan said on patch 2, so I look forward to the resend of that.

>
> We noticed that many users have the intuition of laving the editor empty when
> they want to abort the operation. The fact that dropmissing allows user to
> delete all edited commits is not intuitive even for users that asked for it.
>
> Let's prevent people from this footgun.
>
> diff --git a/hgext/histedit.py b/hgext/histedit.py
> --- a/hgext/histedit.py
> +++ b/hgext/histedit.py
> @@ -1377,6 +1377,10 @@ def verifyactions(actions, state, ctxs):
>      missing = sorted(expected - seen)  # sort to stabilize output
>
>      if state.repo.ui.configbool('histedit', 'dropmissing'):
> +        if len(actions) == 0:
> +            raise error.ParseError(_('no rules provided'),
> +                    hint=_('use strip extension to remove commits'))
> +
>          drops = [drop(state, node.bin(n)) for n in missing]
>          # put the in the beginning so they execute immediately and
>          # don't show in the edit-plan in the future
> diff --git a/tests/test-histedit-drop.t b/tests/test-histedit-drop.t
> --- a/tests/test-histedit-drop.t
> +++ b/tests/test-histedit-drop.t
> @@ -153,6 +153,10 @@ Drop the last changeset
>    hg: parse error: missing rules for changeset a4f7421b80f7
>    (use "drop a4f7421b80f7" to discard, see also: "hg help -e histedit.config")
>    $ hg --config histedit.dropmissing=True histedit  cb9a9f314b8b --commands - 2>&1 << EOF | fixbundle
> +  > EOF
> +  hg: parse error: no rules provided
> +  (use strip extension to remove commits)
> +  $ hg --config histedit.dropmissing=True histedit  cb9a9f314b8b --commands - 2>&1 << EOF | fixbundle
>    > pick cb9a9f314b8b a
>    > pick ee283cb5f2d5 e
>    > EOF
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list