# HG changeset patch # User Martin von Zweigbergk # Date 2017-03-22 00:50:44 # Node ID 7e3b145f824793ccdb5caf4f13570d4f25ab0164 # Parent 37a0ad669051ab70b89aaf669a7c277a908cf4b4 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. diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -4734,7 +4734,7 @@ def status(ui, repo, *pats, **opts): else: node1, node2 = scmutil.revpair(repo, revs) - if pats: + if pats or ui.configbool('commands', 'status.relative'): cwd = repo.getcwd() else: cwd = '' diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt --- a/mercurial/help/config.txt +++ b/mercurial/help/config.txt @@ -417,6 +417,10 @@ effect and style see :hg:`help color`. ``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`` diff --git a/tests/test-status.t b/tests/test-status.t --- a/tests/test-status.t +++ b/tests/test-status.t @@ -107,6 +107,27 @@ combining patterns with root and pattern ? a/in_a ? b/in_b +relative paths can be requested + + $ cat >> $HGRCPATH < [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