[PATCH 02 of 11] record: ignore trailing content when parsing patches - introduce 'other' lines
Mads Kiilerich
mads at kiilerich.com
Sun Apr 14 20:14:17 CDT 2013
# HG changeset patch
# User Mads Kiilerich <mads at kiilerich.com>
# Date 1339621594 -7200
# Node ID b31151e5e706695da5437f85d1be46a5c3476fe4
# Parent b462a1363e20c167775d252f31d44532b73a8193
record: ignore trailing content when parsing patches - introduce 'other' lines
This makes record work more like import which ignores for instance mail footers
in a patch file.
This also makes it possible for TortoiseHg to preview unapplied patches
containing such footers.
diff --git a/hgext/record.py b/hgext/record.py
--- a/hgext/record.py
+++ b/hgext/record.py
@@ -76,7 +76,7 @@ def scanpatch(fp):
if m:
yield 'range', m.groups()
else:
- raise patch.PatchError('unknown patch content: %r' % line)
+ yield 'other', line
class header(object):
"""patch header
@@ -228,6 +228,9 @@ def parsepatch(fp):
self.headers.append(h)
self.header = h
+ def addother(self, line):
+ pass # 'other' lines are ignored
+
def finished(self):
self.addcontext([])
return self.headers
@@ -239,12 +242,14 @@ def parsepatch(fp):
'range': addrange},
'context': {'file': newfile,
'hunk': addhunk,
- 'range': addrange},
+ 'range': addrange,
+ 'other': addother},
'hunk': {'context': addcontext,
'file': newfile,
'range': addrange},
'range': {'context': addcontext,
'hunk': addhunk},
+ 'other': {'other': addother},
}
p = parser()
diff --git a/tests/test-record.t b/tests/test-record.t
--- a/tests/test-record.t
+++ b/tests/test-record.t
@@ -1036,10 +1036,10 @@ Abort early when a merge is in progress
$ hg up -C
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-Editing patch
+Editing patch (and ignoring trailing text)
$ cat > editor.sh << '__EOF__'
- > sed -e 7d -e '5s/^-/ /' "$1" > tmp
+ > sed -e 7d -e '5s/^-/ /' -e '/^# ---/itrailing\nditto' "$1" > tmp
> mv tmp "$1"
> __EOF__
$ cat > editedfile << '__EOF__'
@@ -1201,6 +1201,8 @@ Malformed patch - error handling
abort: error parsing patch: unhandled transition: range -> range
[255]
+random text in random positions is still an error
+
$ cat > editor.sh << '__EOF__'
> sed -e '/^@/iother' "$1" > tmp
> mv tmp "$1"
@@ -1220,7 +1222,7 @@ Malformed patch - error handling
+This is the second line
+This line has been added
record this change to 'editedfile'? [Ynesfdaq?]
- abort: error parsing patch: unknown patch content: 'other\n'
+ abort: error parsing patch: unhandled transition: file -> other
[255]
$ hg up -C
More information about the Mercurial-devel
mailing list