Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH] Fix missing/buggy diff output prefixes w/ --graph

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:53:21

Lucian Poston [off-list ref] writes:
Fixed issue with `git log --graph --stat -p` in which the "---" diff output
header appears before the diff output prefix.

Fixed issue where diff output prefix is absent on empty lines separating diff
stats and patch.

Added test to verify the graph decoration prefixes of
`git log --pretty=short --stat -p --graph` are printed correctly.

Signed-off-by: Lucian Poston <redacted>
---
Same comment as the one for your other patch applies to this.  Especially,
the Subject says "missing/buggy" but it is unclear if "missing" is the
only bugginess you are addressing, or there are other "bugginess" other
than "missing" from no description in the log message.
quoted hunk
diff --git a/diff.c b/diff.c
index 377ec1e..29003eb 100644
--- a/diff.c
+++ b/diff.c
@@ -4399,6 +4399,12 @@ void diff_flush(struct diff_options *options)
 
 	if (output_format & DIFF_FORMAT_PATCH) {
 		if (separator) {
+			if (options->output_prefix) {
+				struct strbuf *msg = NULL;
+				msg = options->output_prefix(options,
+					options->output_prefix_data);
+				fwrite(msg->buf, msg->len, 1, stdout);
+			}
 			putc(options->line_termination, options->file);
 			if (options->stat_sep) {
 				/* attach patch instead of inline */
Immediately before a separator (typically LF) that comes between the log
message and the patch text, we forgot to show the ancestry graph lines.
This corresponds to the second paragraph of your log message.

This is a tangent, but I wonder how --graph should interact with stat_sep
(i.e. patch is shown as an attachment) case. Perhaps the combination need
to be forbidden, but we probably do not care (in other words, the user
would get whatever the code happens to produce).
quoted hunk
diff --git a/log-tree.c b/log-tree.c
index cea8756..3198503 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -710,15 +710,16 @@ int log_tree_diff_flush(struct rev_info *opt)
 		if ((opt->diffopt.output_format & ~DIFF_FORMAT_NO_OUTPUT) &&
 		    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("---");
 			if (opt->diffopt.output_prefix) {
 				struct strbuf *msg = NULL;
 				msg = opt->diffopt.output_prefix(&opt->diffopt,
 					opt->diffopt.output_prefix_data);
 				fwrite(msg->buf, msg->len, 1, stdout);
 			}
+			int pch = DIFF_FORMAT_DIFFSTAT | DIFF_FORMAT_PATCH;
Moving this line is unnecessary, and introduces decl-after-statement to
break compilation.
+			if ((pch & opt->diffopt.output_format) == pch) {
+				printf("---");
+			}
We used to show the "---" before ancestry graph lines, which was nonsense.
This corresponds to the first paragraph of your log message.

Looks good from a cursory review.  Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help