D5800: config: introduce a new value for ui.relative-paths getting old behavior
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sat Feb 2 07:12:56 UTC 2019
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
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.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D5800
AFFECTED FILES
mercurial/commands.py
mercurial/configitems.py
mercurial/scmutil.py
CHANGE DETAILS
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -725,9 +725,28 @@
return []
return parents
-def getuipathfn(repo, relative=None):
- if relative is None:
- relative = repo.ui.configbool('ui', 'relative-paths')
+def getuipathfn(repo, legacyvalue=False, forcevalue=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.
+
+ legacyvalue is the value to use if ui.relative-paths=legacy
+
+ If forcevalue is not None, then that value will be used regardless of
+ what ui.relative-paths is set to.
+ """""
+ if forcevalue is not None:
+ relative = forcevalue
+ else:
+ config = repo.ui.config('ui', 'relative-paths')
+ if config == 'legacy':
+ relative = legacyvalue
+ else:
+ relative = stringutil.parsebool(config)
if relative:
cwd = repo.getcwd()
pathto = repo.pathto
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -1234,7 +1234,7 @@
default=False,
)
coreconfigitem('ui', 'relative-paths',
- default=False,
+ default='legacy',
)
coreconfigitem('ui', 'remotecmd',
default='hg',
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -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, forcevalue=relative)
if opts.get('print0'):
end = '\0'
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list