changeset 41401:4a33a6bf2b52

diffstat: support filenames with whitespaces on renames This is a follow-up patch to D5628. `line.split()` cannot get filenames with whitespaces as mentioned by @yuja. This patch replaces `split()` method with `slice`. Corresponding tests were also added. Differential Revision: https://phab.mercurial-scm.org/D5709
author Navaneeth Suresh <navaneeths1998@gmail.com>
date Sat, 26 Jan 2019 13:14:21 +0530
parents 4a409c19831f
children 4f0aca2b8c21
files mercurial/patch.py tests/test-diffstat.t
diffstat 2 files changed, 18 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/patch.py	Mon Jan 21 23:08:31 2019 -0800
+++ b/mercurial/patch.py	Sat Jan 26 13:14:21 2019 +0530
@@ -2806,9 +2806,9 @@
               line.startswith('Binary file')):
             isbinary = True
         elif line.startswith('rename from'):
-            filename = line.split()[-1]
+            filename = line[12:]
         elif line.startswith('rename to'):
-            filename += ' => %s' % line.split()[-1]
+            filename += ' => %s' % line[10:]
     addresult()
     return results
 
--- a/tests/test-diffstat.t	Mon Jan 21 23:08:31 2019 -0800
+++ b/tests/test-diffstat.t	Sat Jan 26 13:14:21 2019 +0530
@@ -255,3 +255,19 @@
   $ hg diff --stat --git
    a => b |  0 
    1 files changed, 0 insertions(+), 0 deletions(-)
+-- filename may contain whitespaces
+  $ echo > c
+  $ hg ci -Am 'add c'
+  adding c
+  $ hg mv c 'new c'
+  $ hg diff --git
+  diff --git a/c b/new c
+  rename from c
+  rename to new c
+  $ hg diff --stat
+   c     |  1 -
+   new c |  1 +
+   2 files changed, 1 insertions(+), 1 deletions(-)
+  $ hg diff --stat --git
+   c => new c |  0 
+   1 files changed, 0 insertions(+), 0 deletions(-)