changeset 48412:220506bb213e

patch: add hint about mangled whitespace on bad patch One of the most common reasons that a patch doesn't apply is because its whitespace has been mangled (e.g. by their mail client or though copy&paste). Let's provide a hint about that. Differential Revision: https://phab.mercurial-scm.org/D11825
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 19 Nov 2021 09:17:30 -0800
parents 6a454e7053a1
children 67064c238ae7
files mercurial/cmdutil.py tests/test-import-git.t tests/test-import.t
diffstat 3 files changed, 18 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Fri Nov 19 12:57:53 2021 -0800
+++ b/mercurial/cmdutil.py	Fri Nov 19 09:17:30 2021 -0800
@@ -2025,7 +2025,12 @@
                 similarity=sim / 100.0,
             )
         except error.PatchParseError as e:
-            raise error.InputError(pycompat.bytestr(e))
+            raise error.InputError(
+                pycompat.bytestr(e),
+                hint=_(
+                    b'check that whitespace in the patch has not been mangled'
+                ),
+            )
         except error.PatchApplicationError as e:
             if not partial:
                 raise error.StateError(pycompat.bytestr(e))
@@ -2086,7 +2091,12 @@
                     eolmode=None,
                 )
             except error.PatchParseError as e:
-                raise error.InputError(stringutil.forcebytestr(e))
+                raise error.InputError(
+                    stringutil.forcebytestr(e),
+                    hint=_(
+                        b'check that whitespace in the patch has not been mangled'
+                    ),
+                )
             except error.PatchApplicationError as e:
                 raise error.StateError(stringutil.forcebytestr(e))
             if opts.get(b'exact'):
--- a/tests/test-import-git.t	Fri Nov 19 12:57:53 2021 -0800
+++ b/tests/test-import-git.t	Fri Nov 19 09:17:30 2021 -0800
@@ -519,6 +519,7 @@
   > EOF
   applying patch from stdin
   abort: could not decode "binary2" binary patch: bad base85 character at position 6
+  (check that whitespace in the patch has not been mangled)
   [10]
 
   $ hg revert -aq
@@ -534,6 +535,7 @@
   > EOF
   applying patch from stdin
   abort: "binary2" length is 5 bytes, should be 6
+  (check that whitespace in the patch has not been mangled)
   [10]
 
   $ hg revert -aq
@@ -548,6 +550,7 @@
   > EOF
   applying patch from stdin
   abort: could not extract "binary2" binary data
+  (check that whitespace in the patch has not been mangled)
   [10]
 
 Simulate a copy/paste turning LF into CRLF (issue2870)
--- a/tests/test-import.t	Fri Nov 19 12:57:53 2021 -0800
+++ b/tests/test-import.t	Fri Nov 19 09:17:30 2021 -0800
@@ -234,6 +234,7 @@
   $ hg --cwd b import -mpatch ../broken.patch
   applying ../broken.patch
   abort: bad hunk #1
+  (check that whitespace in the patch has not been mangled)
   [10]
   $ rm -r b
 
@@ -2076,6 +2077,7 @@
   > EOF
   applying patch from stdin
   abort: bad hunk #1: incomplete hunk
+  (check that whitespace in the patch has not been mangled)
   [10]
 
   $ hg import - <<'EOF'
@@ -2087,4 +2089,5 @@
   > EOF
   applying patch from stdin
   abort: bad hunk #1: incomplete hunk
+  (check that whitespace in the patch has not been mangled)
   [10]