Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/patch.py @ 34566:60213a2eca81
patch: do not cache translated messages (API)
Previously the code caches `i18n._` results in module variables. That causes
issues after an encoding change. Instead of invalidating them manually, we
now just recalculate the translated messages every time `filterpatch` gets
called.
This makes test-commit-interactive.t pass regardless of whether chg or
demandimport is used or not.
.. api: `patch.messages` now lives in `patch.getmessages()`.
Extensions adding new messages should now wrap the `patch.getmessages`
method instead of changing `patch.messages` directly.
Differential Revision: https://phab.mercurial-scm.org/D959
author | Jun Wu <quark@fb.com> |
---|---|
date | Thu, 05 Oct 2017 13:38:48 -0700 |
parents | fe6125ebdf91 |
children | 35c6a54ec1ff |
comparison
equal
deleted
inserted
replaced
34565:4aa57627692a | 34566:60213a2eca81 |
---|---|
992 return self.header.filename() | 992 return self.header.filename() |
993 | 993 |
994 def __repr__(self): | 994 def __repr__(self): |
995 return '<hunk %r@%d>' % (self.filename(), self.fromline) | 995 return '<hunk %r@%d>' % (self.filename(), self.fromline) |
996 | 996 |
997 messages = { | 997 def getmessages(): |
998 'multiple': { | 998 return { |
999 'discard': _("discard change %d/%d to '%s'?"), | 999 'multiple': { |
1000 'record': _("record change %d/%d to '%s'?"), | 1000 'discard': _("discard change %d/%d to '%s'?"), |
1001 'revert': _("revert change %d/%d to '%s'?"), | 1001 'record': _("record change %d/%d to '%s'?"), |
1002 }, | 1002 'revert': _("revert change %d/%d to '%s'?"), |
1003 'single': { | 1003 }, |
1004 'discard': _("discard this change to '%s'?"), | 1004 'single': { |
1005 'record': _("record this change to '%s'?"), | 1005 'discard': _("discard this change to '%s'?"), |
1006 'revert': _("revert this change to '%s'?"), | 1006 'record': _("record this change to '%s'?"), |
1007 }, | 1007 'revert': _("revert this change to '%s'?"), |
1008 'help': { | 1008 }, |
1009 'discard': _('[Ynesfdaq?]' | 1009 'help': { |
1010 '$$ &Yes, discard this change' | 1010 'discard': _('[Ynesfdaq?]' |
1011 '$$ &No, skip this change' | 1011 '$$ &Yes, discard this change' |
1012 '$$ &Edit this change manually' | 1012 '$$ &No, skip this change' |
1013 '$$ &Skip remaining changes to this file' | 1013 '$$ &Edit this change manually' |
1014 '$$ Discard remaining changes to this &file' | 1014 '$$ &Skip remaining changes to this file' |
1015 '$$ &Done, skip remaining changes and files' | 1015 '$$ Discard remaining changes to this &file' |
1016 '$$ Discard &all changes to all remaining files' | 1016 '$$ &Done, skip remaining changes and files' |
1017 '$$ &Quit, discarding no changes' | 1017 '$$ Discard &all changes to all remaining files' |
1018 '$$ &? (display help)'), | 1018 '$$ &Quit, discarding no changes' |
1019 'record': _('[Ynesfdaq?]' | 1019 '$$ &? (display help)'), |
1020 '$$ &Yes, record this change' | 1020 'record': _('[Ynesfdaq?]' |
1021 '$$ &No, skip this change' | 1021 '$$ &Yes, record this change' |
1022 '$$ &Edit this change manually' | 1022 '$$ &No, skip this change' |
1023 '$$ &Skip remaining changes to this file' | 1023 '$$ &Edit this change manually' |
1024 '$$ Record remaining changes to this &file' | 1024 '$$ &Skip remaining changes to this file' |
1025 '$$ &Done, skip remaining changes and files' | 1025 '$$ Record remaining changes to this &file' |
1026 '$$ Record &all changes to all remaining files' | 1026 '$$ &Done, skip remaining changes and files' |
1027 '$$ &Quit, recording no changes' | 1027 '$$ Record &all changes to all remaining files' |
1028 '$$ &? (display help)'), | 1028 '$$ &Quit, recording no changes' |
1029 'revert': _('[Ynesfdaq?]' | 1029 '$$ &? (display help)'), |
1030 '$$ &Yes, revert this change' | 1030 'revert': _('[Ynesfdaq?]' |
1031 '$$ &No, skip this change' | 1031 '$$ &Yes, revert this change' |
1032 '$$ &Edit this change manually' | 1032 '$$ &No, skip this change' |
1033 '$$ &Skip remaining changes to this file' | 1033 '$$ &Edit this change manually' |
1034 '$$ Revert remaining changes to this &file' | 1034 '$$ &Skip remaining changes to this file' |
1035 '$$ &Done, skip remaining changes and files' | 1035 '$$ Revert remaining changes to this &file' |
1036 '$$ Revert &all changes to all remaining files' | 1036 '$$ &Done, skip remaining changes and files' |
1037 '$$ &Quit, reverting no changes' | 1037 '$$ Revert &all changes to all remaining files' |
1038 '$$ &? (display help)') | 1038 '$$ &Quit, reverting no changes' |
1039 '$$ &? (display help)') | |
1040 } | |
1039 } | 1041 } |
1040 } | |
1041 | 1042 |
1042 def filterpatch(ui, headers, operation=None): | 1043 def filterpatch(ui, headers, operation=None): |
1043 """Interactively filter patch chunks into applied-only chunks""" | 1044 """Interactively filter patch chunks into applied-only chunks""" |
1045 messages = getmessages() | |
1046 | |
1044 if operation is None: | 1047 if operation is None: |
1045 operation = 'record' | 1048 operation = 'record' |
1046 | 1049 |
1047 def prompt(skipfile, skipall, query, chunk): | 1050 def prompt(skipfile, skipall, query, chunk): |
1048 """prompt query, and process base inputs | 1051 """prompt query, and process base inputs |