<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Should we add a release notes directive like this:</div><div class=""><br class=""></div><div class="">.. feature::</div><div class=""><br class=""></div><div class="">  When interactive revert is run against a revision other than the working</div><div class="">  directory parent, the diff shown is the diff to *apply* to the working directory, </div><div class="">  rather than the diff to *discard* from the working copy. This is in line with</div><div class="">  related user experiences with `git` and appears to be less confusing with</div><div class="">  `ui.interface=curses`.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The verb is significantly less prominent in the curses interface, which I don't use, so it might make sense do document this more heavily? I don't feel strongly about showing (revert, reverse diff) vs (apply, forward diff)[0], but it took several minutes discussion with Martin before I understood the intent of this patch again. What do you think? Should we add something to the help of `hg revert`?</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Augie</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">0: My mental model has long been that the word "revert" means "what you see will go through patch -p1 --reverse", whereas apply means "what you see will go through patch -p1". I have no idea if that makes sense to anyone, but the prominence of the verb in the plain-text UI probably has been saving me from confusion a bit.</div><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 3, 2017, at 12:39, Martin von Zweigbergk via Mercurial-devel <<a href="mailto:mercurial-devel@mercurial-scm.org" class="">mercurial-devel@mercurial-scm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Queued, thanks!</div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, Nov 3, 2017 at 9:34 AM, Denis Laxalde <span dir="ltr" class=""><<a href="mailto:denis@laxalde.org" target="_blank" class="">denis@laxalde.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br class="">
# User Denis Laxalde <<a href="mailto:denis.laxalde@logilab.fr" class="">denis.laxalde@logilab.fr</a>><br class="">
# Date 1509716857 -3600<br class="">
#      Fri Nov 03 14:47:37 2017 +0100<br class="">
# Node ID 095ef7f12cb36330d5e2b35b6c93fe<wbr class="">27f6c1aacc<br class="">
# Parent  7ebf850d3166a64ff33b4b85adb481<wbr class="">b533ddbf86<br class="">
# Available At <a href="http://hg.logilab.org/users/dlaxalde/hg" rel="noreferrer" target="_blank" class="">http://hg.logilab.org/users/<wbr class="">dlaxalde/hg</a><br class="">
#              hg pull <a href="http://hg.logilab.org/users/dlaxalde/hg" rel="noreferrer" target="_blank" class="">http://hg.logilab.org/users/<wbr class="">dlaxalde/hg</a> -r 095ef7f12cb3<br class="">
# EXP-Topic revert-interactive<br class="">
revert: do not reverse hunks in interactive when REV is not parent (issue5096)<br class="">
<br class="">
And introduce a new "apply" operation verb for this case as suggested in<br class="">
issue5096. This replaces the no longer used "revert" operation.<br class="">
<br class="">
In interactive revert, when reverting to something else that the parent<br class="">
revision, display an "apply this change" message with a diff that is not<br class="">
reversed.<br class="">
<br class="">
The rationale is that `hg revert -i -r REV` will show hunks of the diff from<br class="">
the working directory to REV and prompt the user to select them for applying<br class="">
(to working directory). This contradicts dcc56e10c23b in which it was<br class="">
decided to have the "direction" of prompted hunks reversed. Later on<br class="">
[1], there was a broad consensus (but no decision) towards the "as to<br class="">
be applied direction". Now that --interactive is no longer experimental<br class="">
(5910db5d1913), it's time to switch and thus we drop no longer used<br class="">
"experimental.<wbr class="">revertalternateinteractivemode<wbr class="">" configuration option.<br class="">
<br class="">
[1]: <a href="https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-November/090142.html" rel="noreferrer" target="_blank" class="">https://www.mercurial-scm.org/<wbr class="">pipermail/mercurial-devel/<wbr class="">2016-November/090142.html</a><br class="">
<br class="">
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py<br class="">
--- a/mercurial/cmdutil.py<br class="">
+++ b/mercurial/cmdutil.py<br class="">
@@ -3790,9 +3790,8 @@ def _performrevert(repo, parents, ctx, a<br class="">
         operation = 'discard'<br class="">
         reversehunks = True<br class="">
         if node != parent:<br class="">
-            operation = 'revert'<br class="">
-            reversehunks = repo.ui.configbool('<wbr class="">experimental',<br class="">
-                '<wbr class="">revertalternateinteractivemode<wbr class="">')<br class="">
+            operation = 'apply'<br class="">
+            reversehunks = False<br class="">
         if reversehunks:<br class="">
             diff = patch.diff(repo, ctx.node(), None, m, opts=diffopts)<br class="">
         else:<br class="">
diff --git a/mercurial/configitems.py b/mercurial/configitems.py<br class="">
--- a/mercurial/configitems.py<br class="">
+++ b/mercurial/configitems.py<br class="">
@@ -439,9 +439,6 @@ coreconfigitem('experimental', 'obsmarke<br class="">
 coreconfigitem('experimental', 'rebase.multidest',<br class="">
     default=False,<br class="">
 )<br class="">
-coreconfigitem('experimental'<wbr class="">, '<wbr class="">revertalternateinteractivemode<wbr class="">',<br class="">
-    default=True,<br class="">
-)<br class="">
 coreconfigitem('experimental', 'revlogv2',<br class="">
     default=None,<br class="">
 )<br class="">
diff --git a/mercurial/patch.py b/mercurial/patch.py<br class="">
--- a/mercurial/patch.py<br class="">
+++ b/mercurial/patch.py<br class="">
@@ -997,16 +997,26 @@ class recordhunk(object):<br class="">
 def getmessages():<br class="">
     return {<br class="">
         'multiple': {<br class="">
+            'apply': _("apply change %d/%d to '%s'?"),<br class="">
             'discard': _("discard change %d/%d to '%s'?"),<br class="">
             'record': _("record change %d/%d to '%s'?"),<br class="">
-            'revert': _("revert change %d/%d to '%s'?"),<br class="">
         },<br class="">
         'single': {<br class="">
+            'apply': _("apply this change to '%s'?"),<br class="">
             'discard': _("discard this change to '%s'?"),<br class="">
             'record': _("record this change to '%s'?"),<br class="">
-            'revert': _("revert this change to '%s'?"),<br class="">
         },<br class="">
         'help': {<br class="">
+            'apply': _('[Ynesfdaq?]'<br class="">
+                         '$$ &Yes, apply this change'<br class="">
+                         '$$ &No, skip this change'<br class="">
+                         '$$ &Edit this change manually'<br class="">
+                         '$$ &Skip remaining changes to this file'<br class="">
+                         '$$ Apply remaining changes to this &file'<br class="">
+                         '$$ &Done, skip remaining changes and files'<br class="">
+                         '$$ Apply &all changes to all remaining files'<br class="">
+                         '$$ &Quit, applying no changes'<br class="">
+                         '$$ &? (display help)'),<br class="">
             'discard': _('[Ynesfdaq?]'<br class="">
                          '$$ &Yes, discard this change'<br class="">
                          '$$ &No, skip this change'<br class="">
@@ -1027,16 +1037,6 @@ def getmessages():<br class="">
                         '$$ Record &all changes to all remaining files'<br class="">
                         '$$ &Quit, recording no changes'<br class="">
                         '$$ &? (display help)'),<br class="">
-            'revert': _('[Ynesfdaq?]'<br class="">
-                        '$$ &Yes, revert this change'<br class="">
-                        '$$ &No, skip this change'<br class="">
-                        '$$ &Edit this change manually'<br class="">
-                        '$$ &Skip remaining changes to this file'<br class="">
-                        '$$ Revert remaining changes to this &file'<br class="">
-                        '$$ &Done, skip remaining changes and files'<br class="">
-                        '$$ Revert &all changes to all remaining files'<br class="">
-                        '$$ &Quit, reverting no changes'<br class="">
-                        '$$ &? (display help)')<br class="">
         }<br class="">
     }<br class="">
<br class="">
diff --git a/tests/test-revert-<wbr class="">interactive.t b/tests/test-revert-<wbr class="">interactive.t<br class="">
--- a/tests/test-revert-<wbr class="">interactive.t<br class="">
+++ b/tests/test-revert-<wbr class="">interactive.t<br class="">
@@ -60,56 +60,56 @@ 10 run the same test than 8 from within<br class="">
   2 hunks, 2 lines changed<br class="">
   examine changes to 'f'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +1,6 @@<br class="">
-  +a<br class="">
+  @@ -1,6 +1,5 @@<br class="">
+  -a<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  revert change 1/6 to 'f'? [Ynesfdaq?] y<br class="">
+  apply change 1/6 to 'f'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +2,6 @@<br class="">
+  @@ -2,6 +1,5 @@<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  +b<br class="">
-  revert change 2/6 to 'f'? [Ynesfdaq?] y<br class="">
+  -b<br class="">
+  apply change 2/6 to 'f'? [Ynesfdaq?] y<br class="">
<br class="">
   diff --git a/folder1/g b/folder1/g<br class="">
   2 hunks, 2 lines changed<br class="">
   examine changes to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +1,6 @@<br class="">
-  +c<br class="">
+  @@ -1,6 +1,5 @@<br class="">
+  -c<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  revert change 3/6 to 'folder1/g'? [Ynesfdaq?] ?<br class="">
+  apply change 3/6 to 'folder1/g'? [Ynesfdaq?] ?<br class="">
<br class="">
-  y - yes, revert this change<br class="">
+  y - yes, apply this change<br class="">
   n - no, skip this change<br class="">
   e - edit this change manually<br class="">
   s - skip remaining changes to this file<br class="">
-  f - revert remaining changes to this file<br class="">
+  f - apply remaining changes to this file<br class="">
   d - done, skip remaining changes and files<br class="">
-  a - revert all changes to all remaining files<br class="">
-  q - quit, reverting no changes<br class="">
+  a - apply all changes to all remaining files<br class="">
+  q - quit, applying no changes<br class="">
   ? - ? (display help)<br class="">
-  revert change 3/6 to 'folder1/g'? [Ynesfdaq?] y<br class="">
+  apply change 3/6 to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +2,6 @@<br class="">
+  @@ -2,6 +1,5 @@<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  +d<br class="">
-  revert change 4/6 to 'folder1/g'? [Ynesfdaq?] n<br class="">
+  -d<br class="">
+  apply change 4/6 to 'folder1/g'? [Ynesfdaq?] n<br class="">
<br class="">
   diff --git a/folder2/h b/folder2/h<br class="">
   2 hunks, 2 lines changed<br class="">
@@ -157,12 +157,12 @@ Test that a noop revert doesn't do an un<br class="">
   1 hunks, 1 lines changed<br class="">
   examine changes to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -3,3 +3,4 @@<br class="">
+  @@ -3,4 +3,3 @@<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  +d<br class="">
-  revert this change to 'folder1/g'? [Ynesfdaq?] n<br class="">
+  -d<br class="">
+  apply this change to 'folder1/g'? [Ynesfdaq?] n<br class="">
<br class="">
   $ ls folder1/<br class="">
   g<br class="">
@@ -173,12 +173,12 @@ Test --no-backup<br class="">
   1 hunks, 1 lines changed<br class="">
   examine changes to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -3,3 +3,4 @@<br class="">
+  @@ -3,4 +3,3 @@<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  +d<br class="">
-  revert this change to 'folder1/g'? [Ynesfdaq?] y<br class="">
+  -d<br class="">
+  apply this change to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
   $ ls folder1/<br class="">
   g<br class="">
@@ -206,45 +206,45 @@ Test --no-backup<br class="">
   2 hunks, 2 lines changed<br class="">
   examine changes to 'f'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +1,6 @@<br class="">
-  +a<br class="">
+  @@ -1,6 +1,5 @@<br class="">
+  -a<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  revert change 1/6 to 'f'? [Ynesfdaq?] y<br class="">
+  apply change 1/6 to 'f'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +2,6 @@<br class="">
+  @@ -2,6 +1,5 @@<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  +b<br class="">
-  revert change 2/6 to 'f'? [Ynesfdaq?] y<br class="">
+  -b<br class="">
+  apply change 2/6 to 'f'? [Ynesfdaq?] y<br class="">
<br class="">
   diff --git a/folder1/g b/folder1/g<br class="">
   2 hunks, 2 lines changed<br class="">
   examine changes to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +1,6 @@<br class="">
-  +c<br class="">
+  @@ -1,6 +1,5 @@<br class="">
+  -c<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  revert change 3/6 to 'folder1/g'? [Ynesfdaq?] y<br class="">
+  apply change 3/6 to 'folder1/g'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,5 +2,6 @@<br class="">
+  @@ -2,6 +1,5 @@<br class="">
    1<br class="">
    2<br class="">
    3<br class="">
    4<br class="">
    5<br class="">
-  +d<br class="">
-  revert change 4/6 to 'folder1/g'? [Ynesfdaq?] n<br class="">
+  -d<br class="">
+  apply change 4/6 to 'folder1/g'? [Ynesfdaq?] n<br class="">
<br class="">
   diff --git a/folder2/h b/folder2/h<br class="">
   2 hunks, 2 lines changed<br class="">
@@ -368,77 +368,6 @@ 3) Use interactive revert with editing (<br class="">
   $ cat k<br class="">
   42<br class="">
<br class="">
-Check the experimental config to invert the selection:<br class="">
-  $ cat <<EOF >> $HGRCPATH<br class="">
-  > [experimental]<br class="">
-  > revertalternateinteractivemode<wbr class="">=False<br class="">
-  > EOF<br class="">
-<br class="">
-<br class="">
-  $ hg up -C .<br class="">
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved<br class="">
-  $ printf 'firstline\nc\n1\n2\n3\n 3\n5\nd\nlastline\n' > folder1/g<br class="">
-  $ hg diff --nodates<br class="">
-  diff -r a3d963a027aa folder1/g<br class="">
-  --- a/folder1/g<br class="">
-  +++ b/folder1/g<br class="">
-  @@ -1,7 +1,9 @@<br class="">
-  +firstline<br class="">
-   c<br class="">
-   1<br class="">
-   2<br class="">
-   3<br class="">
-  -4<br class="">
-  + 3<br class="">
-   5<br class="">
-   d<br class="">
-  +lastline<br class="">
-  $ hg revert -i <<EOF<br class="">
-  > y<br class="">
-  > y<br class="">
-  > y<br class="">
-  > n<br class="">
-  > EOF<br class="">
-  reverting folder1/g (glob)<br class="">
-  diff --git a/folder1/g b/folder1/g<br class="">
-  3 hunks, 3 lines changed<br class="">
-  examine changes to 'folder1/g'? [Ynesfdaq?] y<br class="">
-<br class="">
-  @@ -1,4 +1,5 @@<br class="">
-  +firstline<br class="">
-   c<br class="">
-   1<br class="">
-   2<br class="">
-   3<br class="">
-  discard change 1/3 to 'folder1/g'? [Ynesfdaq?] y<br class="">
-<br class="">
-  @@ -1,7 +2,7 @@<br class="">
-   c<br class="">
-   1<br class="">
-   2<br class="">
-   3<br class="">
-  -4<br class="">
-  + 3<br class="">
-   5<br class="">
-   d<br class="">
-  discard change 2/3 to 'folder1/g'? [Ynesfdaq?] y<br class="">
-<br class="">
-  @@ -6,2 +7,3 @@<br class="">
-   5<br class="">
-   d<br class="">
-  +lastline<br class="">
-  discard change 3/3 to 'folder1/g'? [Ynesfdaq?] n<br class="">
-<br class="">
-  $ hg diff --nodates<br class="">
-  diff -r a3d963a027aa folder1/g<br class="">
-  --- a/folder1/g<br class="">
-  +++ b/folder1/g<br class="">
-  @@ -5,3 +5,4 @@<br class="">
-   4<br class="">
-   5<br class="">
-   d<br class="">
-  +lastline<br class="">
-<br class="">
   $ hg update -C .<br class="">
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved<br class="">
   $ hg purge<br class="">
@@ -463,11 +392,6 @@ Check the experimental config to invert<br class="">
<br class="">
 When a line without EOL is selected during "revert -i" (issue5651)<br class="">
<br class="">
-  $ cat <<EOF >> $HGRCPATH<br class="">
-  > [experimental]<br class="">
-  > %unset revertalternateinteractivemode<br class="">
-  > EOF<br class="">
-<br class="">
   $ hg init $TESTTMP/revert-i-eol<br class="">
   $ cd $TESTTMP/revert-i-eol<br class="">
   $ echo 0 > a<br class="">
@@ -487,11 +411,11 @@ When a line without EOL is selected duri<br class="">
   1 hunks, 1 lines changed<br class="">
   examine changes to 'a'? [Ynesfdaq?] y<br class="">
<br class="">
-  @@ -1,1 +1,2 @@<br class="">
+  @@ -1,2 +1,1 @@<br class="">
    0<br class="">
-  +1<br class="">
+  -1<br class="">
   \ No newline at end of file<br class="">
-  revert this change to 'a'? [Ynesfdaq?] y<br class="">
+  apply this change to 'a'? [Ynesfdaq?] y<br class="">
<br class="">
   $ cat a<br class="">
   0<br class="">
</blockquote></div><br class=""></div>
_______________________________________________<br class="">Mercurial-devel mailing list<br class=""><a href="mailto:Mercurial-devel@mercurial-scm.org" class="">Mercurial-devel@mercurial-scm.org</a><br class="">https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel<br class=""></div></blockquote></div><br class=""></body></html>