comparison mercurial/patch.py @ 11021:c47a1cfad572

patch: minor cleanup of _applydiff
author Mads Kiilerich <mads@kiilerich.com>
date Mon, 26 Apr 2010 13:21:03 +0200
parents dd157720a8ee
children 0429d0d49f92
comparison
equal deleted inserted replaced
11020:dd157720a8ee 11021:c47a1cfad572
1151 def _applydiff(ui, fp, patcher, copyfn, changed, strip=1, 1151 def _applydiff(ui, fp, patcher, copyfn, changed, strip=1,
1152 sourcefile=None, eolmode='strict'): 1152 sourcefile=None, eolmode='strict'):
1153 rejects = 0 1153 rejects = 0
1154 err = 0 1154 err = 0
1155 current_file = None 1155 current_file = None
1156 gitpatches = None 1156 cwd = os.getcwd()
1157 opener = util.opener(os.getcwd()) 1157 opener = util.opener(cwd)
1158 1158
1159 def closefile(): 1159 def closefile():
1160 if not current_file: 1160 if not current_file:
1161 return 0 1161 return 0
1162 current_file.close() 1162 current_file.close()
1164 1164
1165 for state, values in iterhunks(ui, fp, sourcefile): 1165 for state, values in iterhunks(ui, fp, sourcefile):
1166 if state == 'hunk': 1166 if state == 'hunk':
1167 if not current_file: 1167 if not current_file:
1168 continue 1168 continue
1169 current_hunk = values 1169 ret = current_file.apply(values)
1170 ret = current_file.apply(current_hunk)
1171 if ret >= 0: 1170 if ret >= 0:
1172 changed.setdefault(current_file.fname, None) 1171 changed.setdefault(current_file.fname, None)
1173 if ret > 0: 1172 if ret > 0:
1174 err = 1 1173 err = 1
1175 elif state == 'file': 1174 elif state == 'file':
1184 first_hunk, strip) 1183 first_hunk, strip)
1185 current_file = patcher(ui, current_file, opener, 1184 current_file = patcher(ui, current_file, opener,
1186 missing=missing, eolmode=eolmode) 1185 missing=missing, eolmode=eolmode)
1187 except PatchError, err: 1186 except PatchError, err:
1188 ui.warn(str(err) + '\n') 1187 ui.warn(str(err) + '\n')
1189 current_file, current_hunk = None, None 1188 current_file = None
1190 rejects += 1 1189 rejects += 1
1191 continue 1190 continue
1192 elif state == 'git': 1191 elif state == 'git':
1193 gitpatches = values 1192 for gp in values:
1194 cwd = os.getcwd()
1195 for gp in gitpatches:
1196 if gp.op in ('COPY', 'RENAME'): 1193 if gp.op in ('COPY', 'RENAME'):
1197 copyfn(gp.oldpath, gp.path, cwd) 1194 copyfn(gp.oldpath, gp.path, cwd)
1198 changed[gp.path] = gp 1195 changed[gp.path] = gp
1199 else: 1196 else:
1200 raise util.Abort(_('unsupported parser state: %s') % state) 1197 raise util.Abort(_('unsupported parser state: %s') % state)