Patchwork D5800: config: introduce a new value for ui.relative-paths getting old behavior

login
register
mail settings
Submitter phabricator
Date Feb. 5, 2019, 5:49 p.m.
Message ID <19553250c3150ace12b18766c5eb0a2a@localhost.localdomain>
Download mbox | patch
Permalink /patch/38436/
State Not Applicable
Headers show

Comments

phabricator - Feb. 5, 2019, 5:49 p.m.
martinvonz updated this revision to Diff 13811.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D5800?vs=13732&id=13811

REVISION DETAIL
  https://phab.mercurial-scm.org/D5800

AFFECTED FILES
  mercurial/commands.py
  mercurial/configitems.py
  mercurial/scmutil.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: yuja, mercurial-devel

Patch

diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -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
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, forcerelativevalue=relative)
 
     if opts.get('print0'):
         end = '\0'