# HG changeset patch # User Yuya Nishihara # Date 2017-11-11 08:55:15 # Node ID d3d35a55e03b5a45f7d5053d938a5a1101d03551 # Parent cd235d6f851be4d526fd6fc83410f1308c3688d3 dispatch: convert non-list option parsed by _earlygetopt() to string So we can easily compare it with the corresponding getopt() result. There's a minor behavior change. Before, "hg --cwd ''" failed with ENOENT. But with this patch, an empty cwd is silently ignored. "hg -R ''" has always worked as such, so -R has no BC. diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py --- a/mercurial/chgserver.py +++ b/mercurial/chgserver.py @@ -235,6 +235,7 @@ def _loadnewui(srcui, args): cwds = dispatch._earlygetopt(['--cwd'], args) cwd = cwds and os.path.realpath(cwds[-1]) or None rpath = dispatch._earlygetopt(["-R", "--repository", "--repo"], args) + rpath = rpath and rpath[-1] or '' path, newlui = dispatch._getlocal(newui, rpath, wd=cwd) return (newui, newlui) diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -787,8 +787,8 @@ def _getlocal(ui, rpath, wd=None): lui = ui.copy() lui.readconfig(os.path.join(path, ".hg", "hgrc"), path) - if rpath and rpath[-1]: - path = lui.expandpath(rpath[-1]) + if rpath: + path = lui.expandpath(rpath) lui = ui.copy() lui.readconfig(os.path.join(path, ".hg", "hgrc"), path) @@ -829,10 +829,12 @@ def _dispatch(req): # check for cwd cwd = _earlygetopt(['--cwd'], args) + cwd = cwd and cwd[-1] or '' if cwd: - os.chdir(cwd[-1]) + os.chdir(cwd) rpath = _earlygetopt(["-R", "--repository", "--repo"], args) + rpath = rpath and rpath[-1] or '' path, lui = _getlocal(ui, rpath) uis = {ui, lui} @@ -971,7 +973,7 @@ def _dispatch(req): except error.RequirementError: raise except error.RepoError: - if rpath and rpath[-1]: # invalid -R path + if rpath: # invalid -R path raise if not func.optionalrepo: if func.inferrepo and args and not path: