Mercurial > hg > crecord
changeset 90:75eff35f7769
hunk.getFromToLine(): fix for from-/tolen = 0, corresponding line start should be decremented in such cases
author | immerrr <immerrr@gmail.com> |
---|---|
date | Thu, 23 Feb 2012 19:46:04 +0400 |
parents | ccdd58258471 |
children | 513697974b5a |
files | crecord/crpatch.py |
diffstat | 1 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/crecord/crpatch.py +++ b/crecord/crpatch.py @@ -459,13 +459,27 @@ def getFromToLine(self): # calculate the number of removed lines converted to context lines removedConvertedToContext = self.originalremoved - self.removed - delta = len(self.before) + len(self.after) + removedConvertedToContext + + contextLen = (len(self.before) + len(self.after) + + removedConvertedToContext) if self.after and self.after[-1] == '\\ No newline at end of file\n': - delta -= 1 - fromlen = delta + self.removed - tolen = delta + self.added + contextLen -= 1 + fromlen = contextLen + self.removed + tolen = contextLen + self.added + + # Diffutils manual, section "2.2.2.2 Detailed Description of Unified + # Format": "An empty hunk is considered to end at the line that + # precedes the hunk." + # + # So, if either of hunks is empty, decrease its line start. --immerrr + fromline,toline = self.fromline, self.toline + if fromlen == 0: + fromline -= 1 + if tolen == 0: + toline -= 1 + fromToLine = '@@ -%d,%d +%d,%d @@%s\n' % ( - self.fromline, fromlen, self.toline, tolen, + fromline, fromlen, toline, tolen, self.proc and (' ' + self.proc)) return fromToLine