[PATCH] [RESEND] Handle patches with misformatted empty lines

Hollis Blanchard hollisb at us.ibm.com
Thu Nov 1 17:16:25 CDT 2007


# HG changeset patch
# User Hollis Blanchard <hollisb at us.ibm.com>
# Date 1193955350 18000
# Node ID 2f73af76383b5d00af1251d6ec12336385d072f8
# Parent  4205f626dc055151084f3d0bae315d64f5095edf
[RESEND] Handle patches with misformatted empty lines
Insert a space on empty lines which are missing a control character.

Signed-off-by: Hollis Blanchard <hollisb at us.ibm.com>
---
I frequently receive emailed patches with empty lines represented as "\n\n",
where Mercurial expects them to be "\n \n". patch(1) applies these patches
without complaint, but qpush fails all hunks.

diff --git a/mercurial/diffhelpers.c b/mercurial/diffhelpers.c
--- a/mercurial/diffhelpers.c
+++ b/mercurial/diffhelpers.c
@@ -83,6 +83,12 @@ addlines(PyObject *self, PyObject *args)
 				_fix_newline(hunk, a, b);
 				continue;
 			}
+			if (c == '\n') {
+				/* Some patches may be missing the control char
+				 * on empty lines. Supply a leading space. */
+				Py_DECREF(x);
+				x = PyString_FromString(" \n");
+			}
 			PyList_Append(hunk, x);
 			if (c == '+') {
 				l = PyString_FromString(s + 1);


More information about the Mercurial-devel mailing list