264 raise |
264 raise |
265 |
265 |
266 tmpfp.close() |
266 tmpfp.close() |
267 return patchname |
267 return patchname |
268 |
268 |
269 def patch(patchname, ui, strip=1, cwd=None): |
269 def patch(patchname, ui, strip=1, cwd=None, files={}): |
270 """apply the patch <patchname> to the working directory. |
270 """apply the patch <patchname> to the working directory. |
271 a list of patched files is returned""" |
271 a list of patched files is returned""" |
272 |
272 |
273 # helper function |
273 # helper function |
274 def __patch(patchname): |
274 def __patch(patchname): |
275 """patch and updates the files and fuzz variables""" |
275 """patch and updates the files and fuzz variables""" |
276 files = {} |
|
277 fuzz = False |
276 fuzz = False |
278 |
277 |
279 patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''), |
278 patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''), |
280 'patch') |
279 'patch') |
281 args = [] |
280 args = [] |
306 ui.warn(line + '\n') |
305 ui.warn(line + '\n') |
307 code = fp.close() |
306 code = fp.close() |
308 if code: |
307 if code: |
309 raise util.Abort(_("patch command failed: %s") % |
308 raise util.Abort(_("patch command failed: %s") % |
310 util.explain_exit(code)[0]) |
309 util.explain_exit(code)[0]) |
311 return files, fuzz |
310 return fuzz |
312 |
311 |
313 (dopatch, gitpatches) = readgitpatch(patchname) |
312 (dopatch, gitpatches) = readgitpatch(patchname) |
314 |
313 for gp in gitpatches: |
315 files, fuzz = {}, False |
314 files[gp.path] = (gp.op, gp) |
|
315 |
|
316 fuzz = False |
316 if dopatch: |
317 if dopatch: |
317 if dopatch in ('filter', 'binary'): |
318 if dopatch in ('filter', 'binary'): |
318 patchname = dogitpatch(patchname, gitpatches, cwd=cwd) |
319 patchname = dogitpatch(patchname, gitpatches, cwd=cwd) |
319 try: |
320 try: |
320 if dopatch != 'binary': |
321 if dopatch != 'binary': |
321 files, fuzz = __patch(patchname) |
322 fuzz = __patch(patchname) |
322 finally: |
323 finally: |
323 if dopatch == 'filter': |
324 if dopatch == 'filter': |
324 os.unlink(patchname) |
325 os.unlink(patchname) |
325 |
326 |
326 for gp in gitpatches: |
327 return fuzz |
327 files[gp.path] = (gp.op, gp) |
|
328 |
|
329 return (files, fuzz) |
|
330 |
328 |
331 def diffopts(ui, opts={}): |
329 def diffopts(ui, opts={}): |
332 return mdiff.diffopts( |
330 return mdiff.diffopts( |
333 text=opts.get('text'), |
331 text=opts.get('text'), |
334 git=(opts.get('git') or |
332 git=(opts.get('git') or |