# HG changeset patch # User Yuya Nishihara # Date 1510390515 -32400 # 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 -r cd235d6f851b -r d3d35a55e03b mercurial/chgserver.py --- a/mercurial/chgserver.py Sat Nov 11 16:46:41 2017 +0900 +++ b/mercurial/chgserver.py Sat Nov 11 17:55:15 2017 +0900 @@ -235,6 +235,7 @@ 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 -r cd235d6f851b -r d3d35a55e03b mercurial/dispatch.py --- a/mercurial/dispatch.py Sat Nov 11 16:46:41 2017 +0900 +++ b/mercurial/dispatch.py Sat Nov 11 17:55:15 2017 +0900 @@ -787,8 +787,8 @@ 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 @@ # 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 @@ 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: