Add ui.patch option.
ui.patch overrides the default patch/gpatch command and options.
--- a/doc/hgrc.5.txt
+++ b/doc/hgrc.5.txt
@@ -432,6 +432,9 @@ ui::
merge;;
The conflict resolution program to use during a manual merge.
Default is "hgmerge".
+ patch;;
+ command to use to apply patches. Look for 'gpatch' or 'patch' in PATH if
+ unset.
quiet;;
Reduce the amount of output printed. True or False. Default is False.
remotecmd;;
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -881,8 +881,10 @@ def debuginstall(ui):
# patch
ui.status(_("Checking patch...\n"))
path = os.environ.get('PATH', '')
- patcher = util.find_in_path('gpatch', path,
- util.find_in_path('patch', path, None))
+ patcher = ui.config('ui', 'patch')
+ if not patcher:
+ patcher = util.find_in_path('gpatch', path,
+ util.find_in_path('patch', path, None))
if not patcher:
ui.write(_(" Can't find patch or gpatch in PATH\n"))
ui.write(_(" (specify a patch utility in your .hgrc file)\n"))
--- a/mercurial/patch.py
+++ b/mercurial/patch.py
@@ -293,11 +293,13 @@ def patch(patchname, ui, strip=1, cwd=No
"""patch and updates the files and fuzz variables"""
fuzz = False
- patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''),
- 'patch')
args = []
- if util.needbinarypatch():
- args.append('--binary')
+ patcher = ui.config('ui', 'patch')
+ if not patcher:
+ patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''),
+ 'patch')
+ if util.needbinarypatch():
+ args.append('--binary')
if cwd:
args.append('-d %s' % util.shellquote(cwd))