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>
diff --git a/diff.c b/diff.c
index 6d04be4..1c131ff 100644
--- a/diff.c
+++ b/diff.c
@@ -1424,7 +1424,7 @@
options->break_opt = -1;
options->rename_limit = -1;
options->context = 3;
- options->msg_sep = "\n";
+ options->msg_sep = "";
options->change = diff_change;
options->add_remove = diff_addremove;
@@ -1455,6 +1455,11 @@
DIFF_FORMAT_DIFFSTAT |
DIFF_FORMAT_CHECKDIFF))
options->recursive = 1;
+ /*
+ * Also pickaxe would not work very well if you do not say recursive
+ */
+ if (options->pickaxe)
+ options->recursive = 1;
if (options->detect_rename && options->rename_limit < 0)
options->rename_limit = diff_rename_limit_default;
@@ -2143,9 +2148,6 @@
if (output_format & DIFF_FORMAT_DIFFSTAT) {
struct diffstat_t diffstat;
- if (separator++)
- putchar('\n');
-
memset(&diffstat, 0, sizeof(struct diffstat_t));
diffstat.xm.consume = diffstat_consume;
for (i = 0; i < q->nr; i++) {
@@ -2154,14 +2156,13 @@
diff_flush_stat(p, options, &diffstat);
}
show_stats(&diffstat);
+ separator++;
}
if (output_format & DIFF_FORMAT_SUMMARY && !is_summary_empty(q)) {
- if (separator++)
- putchar('\n');
-
for (i = 0; i < q->nr; i++)
diff_summary(q->queue[i]);
+ separator++;
}
if (output_format & DIFF_FORMAT_PATCH) {