diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -296,6 +296,9 @@ def patch(patchname, ui, strip=1, cwd=No patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''), 'patch') args = [] + if util.needbinarypatch(): + args.append('--binary') + if cwd: args.append('-d %s' % util.shellquote(cwd)) fp = os.popen('%s %s -p%d < %s' % (patcher, ' '.join(args), strip, diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -793,6 +793,10 @@ def linkfunc(path, fallback): _umask = os.umask(0) os.umask(_umask) +def needbinarypatch(): + """return True if patches should be applied in binary mode by default.""" + return os.name == 'nt' + # Platform specific variants if os.name == 'nt': import msvcrt