comparison mercurial/patch.py @ 13701:bc38ff7cb919

patch: move closefile() into patchfile.close()
author Patrick Mezard <pmezard@gmail.com>
date Sun, 20 Mar 2011 00:22:47 +0100
parents 63307feb59dd
children 85d74f6babf6
comparison
equal deleted inserted replaced
13700:63307feb59dd 13701:bc38ff7cb919
607 return fuzzlen 607 return fuzzlen
608 self.printfile(True) 608 self.printfile(True)
609 self.ui.warn(_("Hunk #%d FAILED at %d\n") % (h.number, orig_start)) 609 self.ui.warn(_("Hunk #%d FAILED at %d\n") % (h.number, orig_start))
610 self.rej.append(horig) 610 self.rej.append(horig)
611 return -1 611 return -1
612
613 def close(self):
614 if self.dirty:
615 self.writelines(self.fname, self.lines)
616 self.write_rej()
617 return len(self.rej)
612 618
613 class hunk(object): 619 class hunk(object):
614 def __init__(self, desc, num, lr, context, create=False, remove=False): 620 def __init__(self, desc, num, lr, context, create=False, remove=False):
615 self.number = num 621 self.number = num
616 self.desc = desc 622 self.desc = desc
1105 err = 0 1111 err = 0
1106 current_file = None 1112 current_file = None
1107 cwd = os.getcwd() 1113 cwd = os.getcwd()
1108 opener = util.opener(cwd) 1114 opener = util.opener(cwd)
1109 1115
1110 def closefile():
1111 if not current_file:
1112 return 0
1113 if current_file.dirty:
1114 current_file.writelines(current_file.fname, current_file.lines)
1115 current_file.write_rej()
1116 return len(current_file.rej)
1117
1118 for state, values in iterhunks(ui, fp): 1116 for state, values in iterhunks(ui, fp):
1119 if state == 'hunk': 1117 if state == 'hunk':
1120 if not current_file: 1118 if not current_file:
1121 continue 1119 continue
1122 ret = current_file.apply(values) 1120 ret = current_file.apply(values)
1123 if ret >= 0: 1121 if ret >= 0:
1124 changed.setdefault(current_file.fname, None) 1122 changed.setdefault(current_file.fname, None)
1125 if ret > 0: 1123 if ret > 0:
1126 err = 1 1124 err = 1
1127 elif state == 'file': 1125 elif state == 'file':
1128 rejects += closefile() 1126 if current_file:
1127 rejects += current_file.close()
1129 afile, bfile, first_hunk = values 1128 afile, bfile, first_hunk = values
1130 try: 1129 try:
1131 current_file, missing = selectfile(afile, bfile, 1130 current_file, missing = selectfile(afile, bfile,
1132 first_hunk, strip) 1131 first_hunk, strip)
1133 current_file = patcher(ui, current_file, opener, 1132 current_file = patcher(ui, current_file, opener,
1148 copyfn(gp.oldpath, gp.path, cwd) 1147 copyfn(gp.oldpath, gp.path, cwd)
1149 changed[gp.path] = gp 1148 changed[gp.path] = gp
1150 else: 1149 else:
1151 raise util.Abort(_('unsupported parser state: %s') % state) 1150 raise util.Abort(_('unsupported parser state: %s') % state)
1152 1151
1153 rejects += closefile() 1152 if current_file:
1153 rejects += current_file.close()
1154 1154
1155 if rejects: 1155 if rejects:
1156 return -1 1156 return -1
1157 return err 1157 return err
1158 1158