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.
--- a/hgext/record.py Thu Apr 11 19:03:33 2013 +0200
+++ b/hgext/record.py Wed Jun 13 23:06:34 2012 +0200
@@ -76,7 +76,7 @@
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 @@
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 @@
'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()
--- a/tests/test-record.t Thu Apr 11 19:03:33 2013 +0200
+++ b/tests/test-record.t Wed Jun 13 23:06:34 2012 +0200
@@ -1036,10 +1036,10 @@
$ 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 @@
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 @@
+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