Fix some more diff options changes.

This fixes various problems in the new diff options code.

 - Fix --cc/-c --patch; it showed two-tree diff used internally.

 - Use "---\n" only where it matters -- that is, use it
   immediately after the commit log text when we show a
   commit log and something else before the patch text.

 - Do not output spurious extra "\n"; have an extra newline
   after the commit log text always when we have diff output and
   we are not doing oneline.

 - When running a pickaxe you need to go recursive.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2006-06-27 15:08:19 -07:00
parent a959e0dc16
commit 3969cf7db1
4 changed files with 38 additions and 19 deletions

View File

@ -164,9 +164,22 @@ int log_tree_diff_flush(struct rev_info *opt)
return 0;
}
if (opt->loginfo && !opt->no_commit_id)
if (opt->loginfo && !opt->no_commit_id) {
/* When showing a verbose header (i.e. log message),
* and not in --pretty=oneline format, we would want
* an extra newline between the end of log and the
* output for readability.
*/
show_log(opt, opt->diffopt.msg_sep);
if (opt->verbose_header &&
opt->commit_format != CMIT_FMT_ONELINE) {
int pch = DIFF_FORMAT_DIFFSTAT | DIFF_FORMAT_PATCH;
if ((pch & opt->diffopt.output_format) == pch)
printf("---%c", opt->diffopt.line_termination);
else
putchar(opt->diffopt.line_termination);
}
}
diff_flush(&opt->diffopt);
return 1;
}