diff: disable diff.noprefix option for diffstat (
issue5759)
We could use patch.diffhunks() instead of patch.diff() to get filenames
without parsing patch content, but that isn't always possible because we
sometimes feed raw patch data to patch.diffstat().
--- a/mercurial/cmdutil.py Sun Dec 17 18:28:15 2017 +0900
+++ b/mercurial/cmdutil.py Sun Dec 17 18:43:05 2017 +0900
@@ -1514,7 +1514,7 @@
match.uipath(matchroot), uirelroot))
if stat:
- diffopts = diffopts.copy(context=0)
+ diffopts = diffopts.copy(context=0, noprefix=False)
width = 80
if not ui.plain():
width = ui.termwidth()
--- a/tests/test-diffstat.t Sun Dec 17 18:28:15 2017 +0900
+++ b/tests/test-diffstat.t Sun Dec 17 18:43:05 2017 +0900
@@ -69,6 +69,57 @@
file with spaces | Bin
1 files changed, 0 insertions(+), 0 deletions(-)
+Filename without "a/" or "b/" (issue5759):
+
+ $ hg diff --config 'diff.noprefix=1' -c1 --stat --git
+ a | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+ $ hg diff --config 'diff.noprefix=1' -c2 --stat --git
+ c | Bin
+ d | 0
+ 2 files changed, 0 insertions(+), 0 deletions(-)
+
+ $ hg log --config 'diff.noprefix=1' -r '1:' -p --stat --git
+ changeset: 1:3a95b07bb77f
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: appenda
+
+ a | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+ diff --git a a
+ --- a
+ +++ a
+ @@ -211,3 +211,6 @@
+ a
+ a
+ a
+ +a
+ +a
+ +a
+
+ changeset: 2:c60a6c753773
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: createb
+
+ c | Bin
+ d | 0
+ 2 files changed, 0 insertions(+), 0 deletions(-)
+
+ diff --git c c
+ new file mode 100644
+ index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f76dd238ade08917e6712764a16a22005a50573d
+ GIT binary patch
+ literal 1
+ Ic${MZ000310RR91
+
+ diff --git d d
+ new file mode 100644
+
+
diffstat within directories:
$ hg rm -f 'file with spaces'