git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Log message printout cleanups

From
Linus Torvalds <torvalds@osdl.org>
Date
Apr 17, 2006, 23:59 UTC
Message-ID
<Pine.LNX.4.64.0604171647380.3701@g5.osdl.org>
In-Reply-To
<7vodyzkehq.fsf@assigned-by-dhcp.cox.net>
On Mon, 17 Apr 2006, Junio C Hamano wrote:
Show 5 quoted lines
> 
> I like the new cmd_log_wc() loop very much; I was planning to do
> this myself, but I was too slow ;-).
> 
> Thanks.

Here's a further patch on top of the previous one with cosmetic improvements (no "real" code changes, just trivial updates):

 - it gets the "---" before a diffstat right, including for the combined 
   merge case. Righ now the logic is that we always use "---" when we have 
   a diffstat, and an empty line otherwise. That's how I visually prefer 
   it, but hey, it can be tweaked later.
 - I made "diff --cc/combined" add the "---/+++" header lines too. The 
   thing won't be mistaken for a valid diff, since the "@@" lines have too 
   many "@" characters (three or more), but it just makes it visually 
   match a real diff, which at least to me makes a big difference in 
   readability. Without them, it just looks very "wrong".
   I guess I should have taken the filename from each individual entry 
   (and had one "---" file per parent), but I didn't even bother to try to 
   see how that works, so this was the simple thing. 
With this, doing a
	git log --cc --patch-with-stat

looks quite readable, I think. The only nagging issue - as far as I'm concerned - is that diffstats for merges are pretty questionable the way they are done now. I suspect it would be better to just have the _first_ diffstat, and always make the merge diffstat be the one for "result against first parent".

I realize that Dscho has been looking at some much "fancier" merge diffstats, but I really do believe that the "what got merged" difference to the original branch (ie parent 1) is what you want in practice.

Anyway, that's a totally separate issue, I'll let you guys fight that out.
		Linus
---
diff --git a/combine-diff.c b/combine-diff.c
index b4fa9c9..aef9006 100644
--- a/combine-diff.c
+++ b/combine-diff.c
@@ -585,6 +585,16 @@ static void reuse_combine_diff(struct sl
 	sline->p_lno[i] = sline->p_lno[j];
 }
 
+static void dump_quoted_path(const char *prefix, const char *path)
+{
+	fputs(prefix, stdout);
+	if (quote_c_style(path, NULL, NULL, 0))
+		quote_c_style(path, NULL, stdout, 0);
+	else
+		printf("%s", path);
+	putchar('\n');
+}
+
 static int show_patch_diff(struct combine_diff_path *elem, int num_parent,
 			   int dense, struct rev_info *rev)
 {
@@ -692,12 +702,7 @@ static int show_patch_diff(struct combin
 
 		if (rev->loginfo)
 			show_log(rev, rev->loginfo, "\n");
-		printf("diff --%s ", dense ? "cc" : "combined");
-		if (quote_c_style(elem->path, NULL, NULL, 0))
-			quote_c_style(elem->path, NULL, stdout, 0);
-		else
-			printf("%s", elem->path);
-		putchar('\n');
+		dump_quoted_path(dense ? "diff --cc " : "diff --combined ", elem->path);
 		printf("index ");
 		for (i = 0; i < num_parent; i++) {
 			abb = find_unique_abbrev(elem->parent[i].sha1,
@@ -728,6 +733,8 @@ static int show_patch_diff(struct combin
 			}
 			putchar('\n');
 		}
+		dump_quoted_path("--- a/", elem->path);
+		dump_quoted_path("+++ b/", elem->path);
 		dump_sline(sline, cnt, num_parent);
 	}
 	free(result);
@@ -861,6 +868,9 @@ void diff_tree_combined_merge(const unsi
 			       &diffopts);
 		diffcore_std(&diffopts);
 		paths = intersect_paths(paths, i, num_parent);
+
+		if (diffopts.with_stat && rev->loginfo)
+			show_log(rev, rev->loginfo, "---\n");
 		diff_flush(&diffopts);
 	}
 
diff --git a/log-tree.c b/log-tree.c
index c0a4432..9e54164 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -1,4 +1,3 @@
-
 #include "cache.h"
 #include "diff.h"
 #include "commit.h"
@@ -55,7 +54,7 @@ int log_tree_diff_flush(struct rev_info 
 	}
 
 	if (opt->loginfo && !opt->no_commit_id)
-		show_log(opt, opt->loginfo, "\n");
+		show_log(opt, opt->loginfo, opt->diffopt.with_stat ? "---\n" : "\n");
 	diff_flush(&opt->diffopt);
 	return 1;
 }
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 of 18 in “Fixes for option parsing”
  1. Linus TorvaldsApr 16, 2006
  2. Junio C HamanoApr 17, 2006
  3. Linus TorvaldsApr 17, 2006
  4. Linus TorvaldsApr 17, 2006
  5. Junio C HamanoApr 17, 2006
  6. Linus TorvaldsApr 17, 2006
  7. Log message printout cleanupsLinus Torvalds, Apr 17, 2006
  8. Junio C HamanoApr 17, 2006
  9. Linus TorvaldsApr 17, 2006
  10. Junio C HamanoApr 18, 2006
  11. Junio C HamanoApr 18, 2006
  12. Linus TorvaldsApr 18, 2006
  13. Junio C HamanoApr 18, 2006
  14. Linus TorvaldsApr 18, 2006
  15. Linus TorvaldsApr 18, 2006
  16. Junio C HamanoApr 18, 2006
  17. diff --stat: make sure to set recursive.Junio C Hamano, Apr 18, 2006
  18. Linus TorvaldsApr 18, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.