comparison mercurial/patch.py @ 13700:63307feb59dd

patch: inline patchfile.hashlines()
author Patrick Mezard <pmezard@gmail.com>
date Sun, 20 Mar 2011 00:09:44 +0100
parents d3c0e0033f13
children bc38ff7cb919
comparison
equal deleted inserted replaced
13699:d3c0e0033f13 13700:63307feb59dd
486 if len(cand) > 1: 486 if len(cand) > 1:
487 # resort our list of potentials forward then back. 487 # resort our list of potentials forward then back.
488 cand.sort(key=lambda x: abs(x - linenum)) 488 cand.sort(key=lambda x: abs(x - linenum))
489 return cand 489 return cand
490 490
491 def hashlines(self):
492 self.hash = {}
493 for x, s in enumerate(self.lines):
494 self.hash.setdefault(s, []).append(x)
495
496 def makerejlines(self, fname): 491 def makerejlines(self, fname):
497 base = os.path.basename(fname) 492 base = os.path.basename(fname)
498 yield "--- %s\n+++ %s\n" % (base, base) 493 yield "--- %s\n+++ %s\n" % (base, base)
499 for x in self.rej: 494 for x in self.rej:
500 for l in x.hunk: 495 for l in x.hunk:
572 self.lines[start : start + h.lena] = h.new() 567 self.lines[start : start + h.lena] = h.new()
573 self.offset += h.lenb - h.lena 568 self.offset += h.lenb - h.lena
574 self.dirty = 1 569 self.dirty = 1
575 return 0 570 return 0
576 571
577 # ok, we couldn't match the hunk. Lets look for offsets and fuzz it 572 # ok, we couldn't match the hunk. Lets look for offsets and fuzz it
578 self.hashlines() 573 self.hash = {}
574 for x, s in enumerate(self.lines):
575 self.hash.setdefault(s, []).append(x)
579 if h.hunk[-1][0] != ' ': 576 if h.hunk[-1][0] != ' ':
580 # if the hunk tried to put something at the bottom of the file 577 # if the hunk tried to put something at the bottom of the file
581 # override the start line and use eof here 578 # override the start line and use eof here
582 search_start = len(self.lines) 579 search_start = len(self.lines)
583 else: 580 else: