# HG changeset patch # User Mads Kiilerich # Date 1286599184 18000 # Node ID d7452292f9d3bc6ce54ee067eb254c994fae2eb2 # Parent 0490d222388252642a8e12b44f907798d6c304c3 import: don't strip '#' lines from patch descriptions (issue 2417) Previously no '# ' lines came through the parser. Now only the first '# ' lines are processed, from '# HG changeset patch' and to the first line not starting with '# '. diff -r 0490d2223882 -r d7452292f9d3 mercurial/patch.py --- a/mercurial/patch.py Fri Oct 08 22:36:11 2010 -0500 +++ b/mercurial/patch.py Fri Oct 08 23:39:44 2010 -0500 @@ -224,6 +224,7 @@ m = diffre.search(payload) if m: hgpatch = False + hgpatchheader = False ignoretext = False ui.debug('found patch at byte %d\n' % m.start(0)) @@ -232,12 +233,12 @@ for line in payload[:m.start(0)].splitlines(): if line.startswith('# HG changeset patch'): ui.debug('patch generated by hg export\n') - hgpatch = True + hgpatchheader = True # drop earlier commit message content cfp.seek(0) cfp.truncate() subject = None - elif hgpatch: + elif hgpatchheader: if line.startswith('# User '): user = line[7:] ui.debug('From: %s\n' % user) @@ -249,9 +250,12 @@ nodeid = line[10:] elif line.startswith("# Parent "): parents.append(line[10:]) + elif not line.startswith("# "): + hgpatchheader = False + hgpatch = True elif line == '---' and gitsendmail: ignoretext = True - if not line.startswith('# ') and not ignoretext: + if not hgpatchheader and not ignoretext: cfp.write(line) cfp.write('\n') message = cfp.getvalue() diff -r 0490d2223882 -r d7452292f9d3 tests/test-patch.t --- a/tests/test-patch.t Fri Oct 08 22:36:11 2010 -0500 +++ b/tests/test-patch.t Fri Oct 08 23:39:44 2010 -0500 @@ -39,3 +39,47 @@ applying ../a.diff Using custom patch + +Issue2417: hg import with # comments in description + +Prepare source repo and patch: + + $ rm $HGRCPATH + $ hg init c + $ cd c + $ echo 0 > a + $ hg ci -A -m 0 a -d '0 0' + $ echo 1 >> a + $ cat << eof > log + > 1 + > # comment for 1 + > eof + $ hg ci -l log -d '0 0' + $ hg export -o p 1 + $ cd .. + +Clone and apply patch: + + $ hg clone -r 0 c d + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd d + $ hg import ../c/p + applying ../c/p + $ hg log -v -r 1 + changeset: 1:89bf2f6d8088 + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: a + description: + 1 + # comment for 1 + + + $ cd ..