import: only the first hg patch marker should be processed (issue2417)
authorMads Kiilerich <mads@kiilerich.com>
Thu, 14 Oct 2010 01:28:29 +0200
changeset 12728 80a3d1121c10
parent 12727 52971985be14
child 12729 55f0648c7e2d
import: only the first hg patch marker should be processed (issue2417) Proper use of the hgpatch state variable had been lost in the final edits of d7452292f9d3 - now it works more like intended.
mercurial/patch.py
tests/test-patch.t
--- a/mercurial/patch.py	Fri Sep 10 10:28:18 2010 +0200
+++ b/mercurial/patch.py	Thu Oct 14 01:28:29 2010 +0200
@@ -228,8 +228,9 @@
                 diffs_seen += 1
                 cfp = cStringIO.StringIO()
                 for line in payload[:m.start(0)].splitlines():
-                    if line.startswith('# HG changeset patch'):
+                    if line.startswith('# HG changeset patch') and not hgpatch:
                         ui.debug('patch generated by hg export\n')
+                        hgpatch = True
                         hgpatchheader = True
                         # drop earlier commit message content
                         cfp.seek(0)
@@ -249,7 +250,6 @@
                             parents.append(line[10:])
                         elif not line.startswith("# "):
                             hgpatchheader = False
-                            hgpatch = True
                     elif line == '---' and gitsendmail:
                         ignoretext = True
                     if not hgpatchheader and not ignoretext:
--- a/tests/test-patch.t	Fri Sep 10 10:28:18 2010 +0200
+++ b/tests/test-patch.t	Thu Oct 14 01:28:29 2010 +0200
@@ -51,8 +51,11 @@
   $ hg ci -A -m 0 a -d '0 0'
   $ echo 1 >> a
   $ cat << eof > log
-  > 1
-  > # comment for 1
+  > first line which can't start with '# '
+  > # second line is a comment but that shouldn't be a problem.
+  > A patch marker like this was more problematic even after d7452292f9d3:
+  > # HG changeset patch
+  > # User lines looks like this - but it _is_ just a comment
   > eof
   $ hg ci -l log -d '0 0'
   $ hg export -o p 1
@@ -72,14 +75,17 @@
   $ hg import ../c/p
   applying ../c/p
   $ hg log -v -r 1
-  changeset:   1:89bf2f6d8088
+  changeset:   1:e8cc66fbbaa6
   tag:         tip
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   files:       a
   description:
-  1
-  # comment for 1
+  first line which can't start with '# '
+  # second line is a comment but that shouldn't be a problem.
+  A patch marker like this was more problematic even after d7452292f9d3:
+  # HG changeset patch
+  # User lines looks like this - but it _is_ just a comment
   
   
   $ cd ..