diff --stat: make sure to set recursive.
authorJunio C Hamano <junkio@cox.net>
Tue, 18 Apr 2006 18:29:33 +0000 (11:29 -0700)
committerJunio C Hamano <junkio@cox.net>
Tue, 18 Apr 2006 18:29:33 +0000 (11:29 -0700)
Just like "patch" format always needs recursive, "diffstat"
format does not make sense without setting recursive.

Signed-off-by: Junio C Hamano <junkio@cox.net>
diff-tree.c
diff.c
git.c

index 7015b06..d1c61c8 100644 (file)
@@ -117,9 +117,6 @@ int main(int argc, const char **argv)
        if (opt->dense_combined_merges)
                opt->diffopt.output_format = DIFF_FORMAT_PATCH;
 
-       if (opt->diffopt.output_format == DIFF_FORMAT_PATCH)
-               opt->diffopt.recursive = 1;
-
        diff_tree_setup_paths(get_pathspec(prefix, argv), &opt->diffopt);
        diff_setup_done(&opt->diffopt);
 
diff --git a/diff.c b/diff.c
index b54bbfa..3a1e6ce 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1029,6 +1029,16 @@ int diff_setup_done(struct diff_options *options)
             options->detect_rename != DIFF_DETECT_COPY) ||
            (0 <= options->rename_limit && !options->detect_rename))
                return -1;
+
+       /*
+        * These cases always need recursive; we do not drop caller-supplied
+        * recursive bits for other formats here.
+        */
+       if ((options->output_format == DIFF_FORMAT_PATCH) ||
+           (options->output_format == DIFF_FORMAT_DIFFSTAT) ||
+           (options->with_stat))
+               options->recursive = 1;
+
        if (options->detect_rename && options->rename_limit < 0)
                options->rename_limit = diff_rename_limit_default;
        if (options->setup & DIFF_SETUP_USE_CACHE) {
diff --git a/git.c b/git.c
index 140ed18..5209b04 100644 (file)
--- a/git.c
+++ b/git.c
@@ -344,8 +344,6 @@ static int cmd_log(int argc, const char **argv, char **envp)
                        opt.ignore_merges = 0;
                if (opt.dense_combined_merges)
                        opt.diffopt.output_format = DIFF_FORMAT_PATCH;
-               if (opt.diffopt.output_format == DIFF_FORMAT_PATCH)
-                       opt.diffopt.recursive = 1;
                if (!full_diff && rev.prune_data)
                        diff_tree_setup_paths(rev.prune_data, &opt.diffopt);
                diff_setup_done(&opt.diffopt);