[PATCH RESEND] revert: do not reverse hunks in interactive when REV is not parent (issue5096)
Martin von Zweigbergk
martinvonz at google.com
Tue Nov 8 12:21:19 EST 2016
On Mon, Nov 7, 2016 at 7:17 AM, Denis Laxalde <denis.laxalde at logilab.fr> wrote:
> # HG changeset patch
> # User Denis Laxalde <denis.laxalde at logilab.fr>
> # Date 1475237490 -7200
> # Fri Sep 30 14:11:30 2016 +0200
> # Node ID 4f7b7750403ce48e78d0f361236f65ac03584c3c
> # Parent d06c049695e6ad3219e7479c65ce98a2f123e878
> revert: do not reverse hunks in interactive when REV is not parent (issue5096)
Still looks great to me. Pierre-Yves, did you want discuss this?
Otherwise I'm more than happy to queue this now. I think this is the
obviously correct way of showing the hunks.
>
> And introduce a new "apply" operation verb for this case as suggested in
> issue5096. This replaces the no longer used "revert" operation.
>
> In interactive revert, when reverting to something else that the parent
> revision, display an "apply this change" message with a diff that is not
> reversed.
>
> The rationale is that `hg revert -i -r REV` will show hunks of the diff from
> the working directory to REV and prompt the user to select them for applying
> (to working directory). This somehow contradicts dcc56e10c23b in which it was
> decided to have the "direction" of prompted hunks reversed...
>
> Drop no longer used "experimental.revertalternateinteractivemode"
> configuration option. (Keeping it would lead to inconsistent prompt message
> vs. hunks display.)
>
> diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py
> +++ b/mercurial/cmdutil.py
> @@ -3291,15 +3291,17 @@ def _performrevert(repo, parents, ctx, a
> diffopts = patch.difffeatureopts(repo.ui, whitespace=True)
> diffopts.nodates = True
> diffopts.git = True
> - reversehunks = repo.ui.configbool('experimental',
> - 'revertalternateinteractivemode',
> - True)
> + if node == parent:
> + operation = 'discard'
> + reversehunks = True
> + else:
> + operation = 'apply'
> + reversehunks = False
> if reversehunks:
> diff = patch.diff(repo, ctx.node(), None, m, opts=diffopts)
> else:
> diff = patch.diff(repo, None, ctx.node(), m, opts=diffopts)
> originalchunks = patch.parsepatch(diff)
> - operation = 'discard' if node == parent else 'revert'
>
> try:
>
> diff --git a/mercurial/patch.py b/mercurial/patch.py
> --- a/mercurial/patch.py
> +++ b/mercurial/patch.py
> @@ -980,14 +980,14 @@ def filterpatch(ui, headers, operation=N
> operation = 'record'
> messages = {
> 'multiple': {
> + 'apply': _("apply change %d/%d to '%s'?"),
> 'discard': _("discard change %d/%d to '%s'?"),
> 'record': _("record change %d/%d to '%s'?"),
> - 'revert': _("revert change %d/%d to '%s'?"),
> }[operation],
> 'single': {
> + 'apply': _("apply this change to '%s'?"),
> 'discard': _("discard this change to '%s'?"),
> 'record': _("record this change to '%s'?"),
> - 'revert': _("revert this change to '%s'?"),
> }[operation],
> }
>
> diff --git a/tests/test-revert-interactive.t b/tests/test-revert-interactive.t
> --- a/tests/test-revert-interactive.t
> +++ b/tests/test-revert-interactive.t
> @@ -57,45 +57,45 @@ 10 run the same test than 8 from within
> 2 hunks, 2 lines changed
> examine changes to 'f'? [Ynesfdaq?] y
>
> - @@ -1,5 +1,6 @@
> - +a
> - 1
> - 2
> - 3
> - 4
> - 5
> - revert change 1/6 to 'f'? [Ynesfdaq?] y
> -
> - @@ -1,5 +2,6 @@
> + @@ -1,6 +1,5 @@
> + -a
> 1
> 2
> 3
> 4
> 5
> - +b
> - revert change 2/6 to 'f'? [Ynesfdaq?] y
> + apply change 1/6 to 'f'? [Ynesfdaq?] y
> +
> + @@ -2,6 +1,5 @@
> + 1
> + 2
> + 3
> + 4
> + 5
> + -b
> + apply change 2/6 to 'f'? [Ynesfdaq?] y
>
> diff --git a/folder1/g b/folder1/g
> 2 hunks, 2 lines changed
> examine changes to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -1,5 +1,6 @@
> - +c
> + @@ -1,6 +1,5 @@
> + -c
> 1
> 2
> 3
> 4
> 5
> - revert change 3/6 to 'folder1/g'? [Ynesfdaq?] y
> + apply change 3/6 to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -1,5 +2,6 @@
> + @@ -2,6 +1,5 @@
> 1
> 2
> 3
> 4
> 5
> - +d
> - revert change 4/6 to 'folder1/g'? [Ynesfdaq?] n
> + -d
> + apply change 4/6 to 'folder1/g'? [Ynesfdaq?] n
>
> diff --git a/folder2/h b/folder2/h
> 2 hunks, 2 lines changed
> @@ -143,12 +143,12 @@ Test that a noop revert doesn't do an un
> 1 hunks, 1 lines changed
> examine changes to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -3,3 +3,4 @@
> + @@ -3,4 +3,3 @@
> 3
> 4
> 5
> - +d
> - revert this change to 'folder1/g'? [Ynesfdaq?] n
> + -d
> + apply this change to 'folder1/g'? [Ynesfdaq?] n
>
> $ ls folder1/
> g
> @@ -159,12 +159,12 @@ Test --no-backup
> 1 hunks, 1 lines changed
> examine changes to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -3,3 +3,4 @@
> + @@ -3,4 +3,3 @@
> 3
> 4
> 5
> - +d
> - revert this change to 'folder1/g'? [Ynesfdaq?] y
> + -d
> + apply this change to 'folder1/g'? [Ynesfdaq?] y
>
> $ ls folder1/
> g
> @@ -190,45 +190,45 @@ Test --no-backup
> 2 hunks, 2 lines changed
> examine changes to 'f'? [Ynesfdaq?] y
>
> - @@ -1,5 +1,6 @@
> - +a
> - 1
> - 2
> - 3
> - 4
> - 5
> - revert change 1/6 to 'f'? [Ynesfdaq?] y
> -
> - @@ -1,5 +2,6 @@
> + @@ -1,6 +1,5 @@
> + -a
> 1
> 2
> 3
> 4
> 5
> - +b
> - revert change 2/6 to 'f'? [Ynesfdaq?] y
> + apply change 1/6 to 'f'? [Ynesfdaq?] y
> +
> + @@ -2,6 +1,5 @@
> + 1
> + 2
> + 3
> + 4
> + 5
> + -b
> + apply change 2/6 to 'f'? [Ynesfdaq?] y
>
> diff --git a/folder1/g b/folder1/g
> 2 hunks, 2 lines changed
> examine changes to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -1,5 +1,6 @@
> - +c
> + @@ -1,6 +1,5 @@
> + -c
> 1
> 2
> 3
> 4
> 5
> - revert change 3/6 to 'folder1/g'? [Ynesfdaq?] y
> + apply change 3/6 to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -1,5 +2,6 @@
> + @@ -2,6 +1,5 @@
> 1
> 2
> 3
> 4
> 5
> - +d
> - revert change 4/6 to 'folder1/g'? [Ynesfdaq?] n
> + -d
> + apply change 4/6 to 'folder1/g'? [Ynesfdaq?] n
>
> diff --git a/folder2/h b/folder2/h
> 2 hunks, 2 lines changed
> @@ -378,29 +378,29 @@ Check the experimental config to invert
> 3 hunks, 3 lines changed
> examine changes to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -1,5 +1,4 @@
> - -firstline
> + @@ -1,4 +1,5 @@
> + +firstline
> c
> 1
> 2
> 3
> discard change 1/3 to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -2,7 +1,7 @@
> + @@ -1,7 +2,7 @@
> c
> 1
> 2
> 3
> - - 3
> - +4
> + -4
> + + 3
> 5
> d
> discard change 2/3 to 'folder1/g'? [Ynesfdaq?] y
>
> - @@ -7,3 +6,2 @@
> + @@ -6,2 +7,3 @@
> 5
> d
> - -lastline
> + +lastline
> discard change 3/3 to 'folder1/g'? [Ynesfdaq?] n
>
> $ hg diff --nodates
> _______________________________________________
> 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