def patch(patchname, ui, strip=1, cwd=None, files={}): """apply <patchname> to the working directory. returns whether patch was applied with fuzz factor.""" patcher = ui.config('ui', 'patch') args = [] try: if patcher: return externalpatch(patcher, args, patchname, ui, strip, cwd, files) else: try: return internalpatch(patchname, ui, strip, cwd, files) except NoHunks: patcher = util.find_exe('gpatch') or util.find_exe('patch') ui.debug('no valid hunks found; trying with %r instead\n' % patcher) if util.needbinarypatch(): args.append('--binary') return externalpatch(patcher, args, patchname, ui, strip, cwd, files) except PatchError, err: s = str(err) if s: raise util.Abort(s) else: raise util.Abort(_('patch failed to apply'))
def patch(patchname, ui, strip=1, cwd=None, files={}, eolmode='strict'): """Apply <patchname> to the working directory. 'eolmode' specifies how end of lines should be handled. It can be: - 'strict': inputs are read in binary mode, EOLs are preserved - 'crlf': EOLs are ignored when patching and reset to CRLF - 'lf': EOLs are ignored when patching and reset to LF - None: get it from user settings, default to 'strict' 'eolmode' is ignored when using an external patcher program. Returns whether patch was applied with fuzz factor. """ patcher = ui.config('ui', 'patch') args = [] try: if patcher: return externalpatch(patcher, args, patchname, ui, strip, cwd, files) else: try: return internalpatch(patchname, ui, strip, cwd, files, eolmode) except NoHunks: patcher = util.find_exe('gpatch') or util.find_exe('patch') or 'patch' ui.debug(_('no valid hunks found; trying with %r instead\n') % patcher) if util.needbinarypatch(): args.append('--binary') return externalpatch(patcher, args, patchname, ui, strip, cwd, files) except PatchError, err: s = str(err) if s: raise util.Abort(s) else: raise util.Abort(_('patch failed to apply'))