Mercurial > hg
changeset 13157:82f840109f76
record: teach parsepatch() about non-git style headers
These changes are not useful to record itself, since it is hard coded
to always generate git style diffs. But it makes parsepatch() more
generally useful for parsing normal patch files.
author | Steve Borho <steve@borho.org> |
---|---|
date | Wed, 08 Dec 2010 22:14:18 -0600 |
parents | d79fdff55627 |
children | 9e7e24052745 |
files | hgext/record.py |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/record.py Mon Dec 13 10:30:15 2010 -0500 +++ b/hgext/record.py Wed Dec 08 22:14:18 2010 -0600 @@ -42,7 +42,7 @@ line = lr.readline() if not line: break - if line.startswith('diff --git a/'): + if line.startswith('diff --git a/') or line.startswith('diff -r '): def notheader(line): s = line.split(None, 1) return not s or s[0] not in ('---', 'diff') @@ -70,7 +70,8 @@ XXX shoudn't we move this to mercurial/patch.py ? """ - diff_re = re.compile('diff --git a/(.*) b/(.*)$') + diffgit_re = re.compile('diff --git a/(.*) b/(.*)$') + diff_re = re.compile('diff -r .* (.*)$') allhunks_re = re.compile('(?:index|new file|deleted file) ') pretty_re = re.compile('(?:new file|deleted file) ') special_re = re.compile('(?:index|new|deleted|copy|rename) ') @@ -110,10 +111,14 @@ return True def files(self): - fromfile, tofile = self.diff_re.match(self.header[0]).groups() - if fromfile == tofile: - return [fromfile] - return [fromfile, tofile] + match = self.diffgit_re.match(self.header[0]) + if match: + fromfile, tofile = match.groups() + if fromfile == tofile: + return [fromfile] + return [fromfile, tofile] + else: + return self.diff_re.match(self.header[0]).groups() def filename(self): return self.files()[-1]