changeset 31589:7e3b145f8247

status: support commands.status.relative config When the config is set to true, status output becomes relative to the working directory. This has bugged me since I started using hg and it turns it is sillily simple to support it (unless I missed something, of course). We could also add a --relative flag, but I would personally always want that on, and I haven't heard any use for having it sometimes on, so this patch only lets you enable it via config.
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 21 Mar 2017 17:50:44 -0700
parents 37a0ad669051
children 78ac8acfc4bd
files mercurial/commands.py mercurial/help/config.txt tests/test-status.t
diffstat 3 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Tue Mar 21 21:26:52 2017 -0700
+++ b/mercurial/commands.py	Tue Mar 21 17:50:44 2017 -0700
@@ -4734,7 +4734,7 @@
     else:
         node1, node2 = scmutil.revpair(repo, revs)
 
-    if pats:
+    if pats or ui.configbool('commands', 'status.relative'):
         cwd = repo.getcwd()
     else:
         cwd = ''
--- a/mercurial/help/config.txt	Tue Mar 21 21:26:52 2017 -0700
+++ b/mercurial/help/config.txt	Tue Mar 21 17:50:44 2017 -0700
@@ -417,6 +417,10 @@
 ``commands``
 ----------
 
+``status.relative``
+    Make paths in ``hg status`` output relative to the current directory.
+    (default: False)
+
 ``update.requiredest``
     Require that the user pass a destination when running ``hg update``.
     For example, ``hg update .::`` will be allowed, but a plain ``hg update``
--- a/tests/test-status.t	Tue Mar 21 21:26:52 2017 -0700
+++ b/tests/test-status.t	Tue Mar 21 17:50:44 2017 -0700
@@ -107,6 +107,27 @@
   ? a/in_a
   ? b/in_b
 
+relative paths can be requested
+
+  $ cat >> $HGRCPATH <<EOF
+  > [commands]
+  > status.relative = True
+  > EOF
+  $ hg status --cwd a
+  ? 1/in_a_1
+  ? in_a
+  ? ../b/1/in_b_1
+  ? ../b/2/in_b_2
+  ? ../b/in_b
+  ? ../in_root
+  $ HGPLAIN=1 hg status --cwd a
+  ? a/1/in_a_1
+  ? a/in_a
+  ? b/1/in_b_1
+  ? b/2/in_b_2
+  ? b/in_b
+  ? in_root
+
   $ cd ..
 
   $ hg init repo2