mercurial/patch.py
changeset 41534 47c92f8ed128
parent 41532 bd3f03d8cc9f
child 41618 e834f6f6f221
equal deleted inserted replaced
41533:0f64091cc851 41534:47c92f8ed128
   751         lines = ["--- %s\n+++ %s\n" % (base, base)]
   751         lines = ["--- %s\n+++ %s\n" % (base, base)]
   752         for x in self.rej:
   752         for x in self.rej:
   753             for l in x.hunk:
   753             for l in x.hunk:
   754                 lines.append(l)
   754                 lines.append(l)
   755                 if l[-1:] != '\n':
   755                 if l[-1:] != '\n':
   756                     lines.append("\n\ No newline at end of file\n")
   756                     lines.append("\n\\ No newline at end of file\n")
   757         self.backend.writerej(self.fname, len(self.rej), self.hunks, lines)
   757         self.backend.writerej(self.fname, len(self.rej), self.hunks, lines)
   758 
   758 
   759     def apply(self, h):
   759     def apply(self, h):
   760         if not h.complete():
   760         if not h.complete():
   761             raise PatchError(_("bad hunk #%d %s (%d %d %d %d)") %
   761             raise PatchError(_("bad hunk #%d %s (%d %d %d %d)") %
  1303                                  (self.number, x))
  1303                                  (self.number, x))
  1304             self.a.append(u)
  1304             self.a.append(u)
  1305             self.hunk.append(u)
  1305             self.hunk.append(u)
  1306 
  1306 
  1307         l = lr.readline()
  1307         l = lr.readline()
  1308         if l.startswith('\ '):
  1308         if l.startswith(br'\ '):
  1309             s = self.a[-1][:-1]
  1309             s = self.a[-1][:-1]
  1310             self.a[-1] = s
  1310             self.a[-1] = s
  1311             self.hunk[-1] = s
  1311             self.hunk[-1] = s
  1312             l = lr.readline()
  1312             l = lr.readline()
  1313         m = contextdesc.match(l)
  1313         m = contextdesc.match(l)
  1321         if self.startb:
  1321         if self.startb:
  1322             self.lenb += 1
  1322             self.lenb += 1
  1323         hunki = 1
  1323         hunki = 1
  1324         for x in pycompat.xrange(self.lenb):
  1324         for x in pycompat.xrange(self.lenb):
  1325             l = lr.readline()
  1325             l = lr.readline()
  1326             if l.startswith('\ '):
  1326             if l.startswith(br'\ '):
  1327                 # XXX: the only way to hit this is with an invalid line range.
  1327                 # XXX: the only way to hit this is with an invalid line range.
  1328                 # The no-eol marker is not counted in the line range, but I
  1328                 # The no-eol marker is not counted in the line range, but I
  1329                 # guess there are diff(1) out there which behave differently.
  1329                 # guess there are diff(1) out there which behave differently.
  1330                 s = self.b[-1][:-1]
  1330                 s = self.b[-1][:-1]
  1331                 self.b[-1] = s
  1331                 self.b[-1] = s
  1378         self.hunk[0] = self.desc
  1378         self.hunk[0] = self.desc
  1379         self._fixnewline(lr)
  1379         self._fixnewline(lr)
  1380 
  1380 
  1381     def _fixnewline(self, lr):
  1381     def _fixnewline(self, lr):
  1382         l = lr.readline()
  1382         l = lr.readline()
  1383         if l.startswith('\ '):
  1383         if l.startswith(br'\ '):
  1384             diffhelper.fixnewline(self.hunk, self.a, self.b)
  1384             diffhelper.fixnewline(self.hunk, self.a, self.b)
  1385         else:
  1385         else:
  1386             lr.push(l)
  1386             lr.push(l)
  1387 
  1387 
  1388     def complete(self):
  1388     def complete(self):