Mercurial > hg
changeset 41575:aec185af621e
config: introduce a new value for ui.relative-paths getting old behavior
The few places I've modified so far to respect ui.relative-paths have
traditionally defaulted showing the path from the repo root. However,
some commands (at least `hg files`) default to showing paths relative
to the cwd. Let's allow a special value for ui.relative-paths to
preserve the old behavior, so we can use that as default value for
it. I don't expect that anyone would want to set this value, so
perhaps we could have relied on it being unset, but I don't really
like behaviors that can only be achieved by a unset config option.
Differential Revision: https://phab.mercurial-scm.org/D5800
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 01 Feb 2019 22:28:55 -0800 |
parents | b436059c1cca |
children | 15f63ac122ea |
files | mercurial/commands.py mercurial/configitems.py mercurial/scmutil.py |
diffstat | 3 files changed, 28 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Tue Feb 05 21:31:33 2019 +0300 +++ b/mercurial/commands.py Fri Feb 01 22:28:55 2019 -0800 @@ -5421,7 +5421,7 @@ relative = True elif ui.hasconfig('commands', 'status.relative'): relative = ui.configbool('commands', 'status.relative') - uipathfn = scmutil.getuipathfn(repo, relative) + uipathfn = scmutil.getuipathfn(repo, forcerelativevalue=relative) if opts.get('print0'): end = '\0'
--- a/mercurial/configitems.py Tue Feb 05 21:31:33 2019 +0300 +++ b/mercurial/configitems.py Fri Feb 01 22:28:55 2019 -0800 @@ -1207,7 +1207,7 @@ default=False, ) coreconfigitem('ui', 'relative-paths', - default=False, + default='legacy', ) coreconfigitem('ui', 'remotecmd', default='hg',
--- a/mercurial/scmutil.py Tue Feb 05 21:31:33 2019 +0300 +++ b/mercurial/scmutil.py Fri Feb 01 22:28:55 2019 -0800 @@ -725,9 +725,32 @@ return [] return parents -def getuipathfn(repo, relative=None): - if relative is None: - relative = repo.ui.configbool('ui', 'relative-paths') +def getuipathfn(repo, legacyrelativevalue=False, forcerelativevalue=None): + """Return a function that produced paths for presenting to the user. + + The returned function takes a repo-relative path and produces a path + that can be presented in the UI. + + Depending on the value of ui.relative-paths, either a repo-relative or + cwd-relative path will be produced. + + legacyrelativevalue is the value to use if ui.relative-paths=legacy + + If forcerelativevalue is not None, then that value will be used regardless + of what ui.relative-paths is set to. + """ + if forcerelativevalue is not None: + relative = forcerelativevalue + else: + config = repo.ui.config('ui', 'relative-paths') + if config == 'legacy': + relative = legacyrelativevalue + else: + relative = stringutil.parsebool(config) + if relative is None: + raise error.ConfigError( + _("ui.relative-paths is not a boolean ('%s')") % config) + if relative: cwd = repo.getcwd() pathto = repo.pathto