diff: make --stat respect ui.relative-paths
It would have been easy to make all diffs respect ui.relative-paths,
but we don't want that since it makes the diff invalid. Perhaps it
makes sense to do that with --noprefix since the point of that is to
make paths that are easy to copy&paste, and the diff is already
invalid anyway. But this patch just makes the --stat version respect
the config option. The --stat view is not even close to a valid diff,
so I think it makes sense to show the paths in more human-friendly
form.
Differential Revision: https://phab.mercurial-scm.org/D5896
--- a/mercurial/logcmdutil.py Sat Feb 09 23:48:19 2019 -0800
+++ b/mercurial/logcmdutil.py Thu Jan 31 15:35:51 2019 -0800
@@ -99,6 +99,9 @@
width = 80
if not ui.plain():
width = ui.termwidth() - graphwidth
+ # If an explicit --root was given, don't respect ui.relative-paths
+ if not relroot:
+ pathfn = compose(scmutil.getuipathfn(repo), pathfn)
chunks = ctx2.diff(ctx1, match, changes, opts=diffopts, pathfn=pathfn,
copysourcematch=copysourcematch,
--- a/tests/test-diffstat.t Sat Feb 09 23:48:19 2019 -0800
+++ b/tests/test-diffstat.t Thu Jan 31 15:35:51 2019 -0800
@@ -146,10 +146,21 @@
$ hg diff --stat .
dir1/new | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
+ $ hg diff --stat . --config ui.relative-paths=yes
+ new | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
$ hg diff --stat --root .
new | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
+ $ hg diff --stat --root . --config ui.relative-paths=yes
+ new | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+--root trumps ui.relative-paths
+ $ hg diff --stat --root .. --config ui.relative-paths=yes
+ new | 1 +
+ ../dir2/new | 1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
$ hg diff --stat --root ../dir1 ../dir2
warning: ../dir2 not inside relative root .