Code

diff --stat-count: finishing touches
authorJunio C Hamano <gitster@pobox.com>
Sat, 28 May 2011 04:50:39 +0000 (21:50 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 28 May 2011 04:50:39 +0000 (21:50 -0700)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
t/t4049-diff-stat-count.sh [new file with mode: 0755]

diff --git a/diff.c b/diff.c
index 82789e30eb7091d9405635438b6c406aac4adb40..542ff42e5aa28b2a235466e07795bd2e6214afd7 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1247,6 +1247,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
        int width, name_width, count;
        const char *reset, *add_c, *del_c;
        const char *line_prefix = "";
+       int extra_shown = 0;
        struct strbuf *msg = NULL;
 
        if (data->nr == 0)
@@ -1376,8 +1377,6 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
                show_graph(options->file, '-', del, del_c, reset);
                fprintf(options->file, "\n");
        }
-       if (count < data->nr)
-               fprintf(options->file, "%s ...\n", line_prefix);
        for (i = count; i < data->nr; i++) {
                uintmax_t added = data->files[i]->added;
                uintmax_t deleted = data->files[i]->deleted;
@@ -1388,6 +1387,9 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
                }
                adds += added;
                dels += deleted;
+               if (!extra_shown)
+                       fprintf(options->file, "%s ...\n", line_prefix);
+               extra_shown = 1;
        }
        fprintf(options->file, "%s", line_prefix);
        fprintf(options->file,
diff --git a/t/t4049-diff-stat-count.sh b/t/t4049-diff-stat-count.sh
new file mode 100755 (executable)
index 0000000..641e70d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+# Copyright (c) 2011, Google Inc.
+
+test_description='diff --stat-count'
+. ./test-lib.sh
+
+test_expect_success setup '
+       >a &&
+       >b &&
+       >c &&
+       >d &&
+       git add a b c d &&
+       chmod +x c d &&
+       echo a >a &&
+       echo b >b &&
+       cat >expect <<-\EOF
+        a |    1 +
+        b |    1 +
+        2 files changed, 2 insertions(+), 0 deletions(-)
+       EOF
+       git diff --stat --stat-count=2 >actual &&
+       test_cmp expect actual
+'
+
+test_done