mercurial/patch.py
branchstable
changeset 12825 61f48581d8ef
parent 12728 80a3d1121c10
child 12915 df1b65f8b4d4
child 13100 66d7a1250c9b
equal deleted inserted replaced
12824:93d6559a9cbc 12825:61f48581d8ef
   684         if self.starta:
   684         if self.starta:
   685             self.lena += 1
   685             self.lena += 1
   686         for x in xrange(self.lena):
   686         for x in xrange(self.lena):
   687             l = lr.readline()
   687             l = lr.readline()
   688             if l.startswith('---'):
   688             if l.startswith('---'):
       
   689                 # lines addition, old block is empty
   689                 lr.push(l)
   690                 lr.push(l)
   690                 break
   691                 break
   691             s = l[2:]
   692             s = l[2:]
   692             if l.startswith('- ') or l.startswith('! '):
   693             if l.startswith('- ') or l.startswith('! '):
   693                 u = '-' + s
   694                 u = '-' + s
   717             self.lenb += 1
   718             self.lenb += 1
   718         hunki = 1
   719         hunki = 1
   719         for x in xrange(self.lenb):
   720         for x in xrange(self.lenb):
   720             l = lr.readline()
   721             l = lr.readline()
   721             if l.startswith('\ '):
   722             if l.startswith('\ '):
       
   723                 # XXX: the only way to hit this is with an invalid line range.
       
   724                 # The no-eol marker is not counted in the line range, but I
       
   725                 # guess there are diff(1) out there which behave differently.
   722                 s = self.b[-1][:-1]
   726                 s = self.b[-1][:-1]
   723                 self.b[-1] = s
   727                 self.b[-1] = s
   724                 self.hunk[hunki - 1] = s
   728                 self.hunk[hunki - 1] = s
   725                 continue
   729                 continue
   726             if not l:
   730             if not l:
       
   731                 # line deletions, new block is empty and we hit EOF
   727                 lr.push(l)
   732                 lr.push(l)
   728                 break
   733                 break
   729             s = l[2:]
   734             s = l[2:]
   730             if l.startswith('+ ') or l.startswith('! '):
   735             if l.startswith('+ ') or l.startswith('! '):
   731                 u = '+' + s
   736                 u = '+' + s
   732             elif l.startswith('  '):
   737             elif l.startswith('  '):
   733                 u = ' ' + s
   738                 u = ' ' + s
   734             elif len(self.b) == 0:
   739             elif len(self.b) == 0:
   735                 # this can happen when the hunk does not add any lines
   740                 # line deletions, new block is empty
   736                 lr.push(l)
   741                 lr.push(l)
   737                 break
   742                 break
   738             else:
   743             else:
   739                 raise PatchError(_("bad hunk #%d old text line %d") %
   744                 raise PatchError(_("bad hunk #%d old text line %d") %
   740                                  (self.number, x))
   745                                  (self.number, x))