comparison mercurial/patch.py @ 34968:3649c3f2cd90

revert: do not reverse hunks in interactive when REV is not parent (issue5096) 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 contradicts dcc56e10c23b in which it was decided to have the "direction" of prompted hunks reversed. Later on [1], there was a broad consensus (but no decision) towards the "as to be applied direction". Now that --interactive is no longer experimental (5910db5d1913), it's time to switch and thus we drop no longer used "experimental.revertalternateinteractivemode" configuration option. [1]: https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-November/090142.html .. feature:: When interactive revert is run against a revision other than the working directory parent, the diff shown is the diff to *apply* to the working directory, rather than the diff to *discard* from the working copy. This is in line with related user experiences with `git` and appears to be less confusing with `ui.interface=curses`.
author Denis Laxalde <denis.laxalde@logilab.fr>
date Fri, 03 Nov 2017 14:47:37 +0100
parents 7ebf850d3166
children 1706eae096e2
comparison
equal deleted inserted replaced
34967:19ecd39223dc 34968:3649c3f2cd90
995 return '<hunk %r@%d>' % (self.filename(), self.fromline) 995 return '<hunk %r@%d>' % (self.filename(), self.fromline)
996 996
997 def getmessages(): 997 def getmessages():
998 return { 998 return {
999 'multiple': { 999 'multiple': {
1000 'apply': _("apply change %d/%d to '%s'?"),
1000 'discard': _("discard change %d/%d to '%s'?"), 1001 'discard': _("discard change %d/%d to '%s'?"),
1001 'record': _("record change %d/%d to '%s'?"), 1002 'record': _("record change %d/%d to '%s'?"),
1002 'revert': _("revert change %d/%d to '%s'?"),
1003 }, 1003 },
1004 'single': { 1004 'single': {
1005 'apply': _("apply this change to '%s'?"),
1005 'discard': _("discard this change to '%s'?"), 1006 'discard': _("discard this change to '%s'?"),
1006 'record': _("record this change to '%s'?"), 1007 'record': _("record this change to '%s'?"),
1007 'revert': _("revert this change to '%s'?"),
1008 }, 1008 },
1009 'help': { 1009 'help': {
1010 'apply': _('[Ynesfdaq?]'
1011 '$$ &Yes, apply this change'
1012 '$$ &No, skip this change'
1013 '$$ &Edit this change manually'
1014 '$$ &Skip remaining changes to this file'
1015 '$$ Apply remaining changes to this &file'
1016 '$$ &Done, skip remaining changes and files'
1017 '$$ Apply &all changes to all remaining files'
1018 '$$ &Quit, applying no changes'
1019 '$$ &? (display help)'),
1010 'discard': _('[Ynesfdaq?]' 1020 'discard': _('[Ynesfdaq?]'
1011 '$$ &Yes, discard this change' 1021 '$$ &Yes, discard this change'
1012 '$$ &No, skip this change' 1022 '$$ &No, skip this change'
1013 '$$ &Edit this change manually' 1023 '$$ &Edit this change manually'
1014 '$$ &Skip remaining changes to this file' 1024 '$$ &Skip remaining changes to this file'
1025 '$$ Record remaining changes to this &file' 1035 '$$ Record remaining changes to this &file'
1026 '$$ &Done, skip remaining changes and files' 1036 '$$ &Done, skip remaining changes and files'
1027 '$$ Record &all changes to all remaining files' 1037 '$$ Record &all changes to all remaining files'
1028 '$$ &Quit, recording no changes' 1038 '$$ &Quit, recording no changes'
1029 '$$ &? (display help)'), 1039 '$$ &? (display help)'),
1030 'revert': _('[Ynesfdaq?]'
1031 '$$ &Yes, revert this change'
1032 '$$ &No, skip this change'
1033 '$$ &Edit this change manually'
1034 '$$ &Skip remaining changes to this file'
1035 '$$ Revert remaining changes to this &file'
1036 '$$ &Done, skip remaining changes and files'
1037 '$$ Revert &all changes to all remaining files'
1038 '$$ &Quit, reverting no changes'
1039 '$$ &? (display help)')
1040 } 1040 }
1041 } 1041 }
1042 1042
1043 def filterpatch(ui, headers, operation=None): 1043 def filterpatch(ui, headers, operation=None):
1044 """Interactively filter patch chunks into applied-only chunks""" 1044 """Interactively filter patch chunks into applied-only chunks"""