X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=diff.c;h=903afa168968038100b4ed8e92562d90146a7f19;hb=7ebdba614223f867d3f19963647406df1d0e5ce0;hp=b54bbfa627219b194333297829843e7200501ee4;hpb=1a17ee22a2fbd85a893ab36fd53168d03554c2dd;p=git.git diff --git a/diff.c b/diff.c index b54bbfa6..903afa16 100644 --- a/diff.c +++ b/diff.c @@ -250,13 +250,14 @@ static void show_stats(struct diffstat_t* data) for (i = 0; i < data->nr; i++) { struct diffstat_file *file = data->files[i]; + len = strlen(file->name); + if (max_len < len) + max_len = len; + if (file->is_binary || file->is_unmerged) continue; if (max_change < file->added + file->deleted) max_change = file->added + file->deleted; - len = strlen(file->name); - if (max_len < len) - max_len = len; } for (i = 0; i < data->nr; i++) { @@ -1029,6 +1030,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) {