Skip to content
  • Linus Torvalds's avatar
    Log message printout cleanups · 91539833
    Linus Torvalds authored
    
    
    On Sun, 16 Apr 2006, Junio C Hamano wrote:
    >
    > In the mid-term, I am hoping we can drop the generate_header()
    > callchain _and_ the custom code that formats commit log in-core,
    > found in cmd_log_wc().
    
    Ok, this was nastier than expected, just because the dependencies between
    the different log-printing stuff were absolutely _everywhere_, but here's
    a patch that does exactly that.
    
    The patch is not very easy to read, and the "--patch-with-stat" thing is
    still broken (it does not call the "show_log()" thing properly for
    merges). That's not a new bug. In the new world order it _should_ do
    something like
    
    	if (rev->logopt)
    		show_log(rev, rev->logopt, "---\n");
    
    but it doesn't. I haven't looked at the --with-stat logic, so I left it
    alone.
    
    That said, this patch removes more lines than it adds, and in particular,
    the "cmd_log_wc()" loop is now a very clean:
    
    	while ((commit = get_revision(rev)) != NULL) {
    		log_tree_commit(rev, commit);
    		free(commit->buffer);
    		commit->buffer = NULL;
    	}
    
    so it doesn't get much prettier than this. All the complexity is entirely
    hidden in log-tree.c, and any code that needs to flush the log literally
    just needs to do the "if (rev->logopt) show_log(...)" incantation.
    
    I had to make the combined_diff() logic take a "struct rev_info" instead
    of just a "struct diff_options", but that part is pretty clean.
    
    This does change "git whatchanged" from using "diff-tree" as the commit
    descriptor to "commit", and I changed one of the tests to reflect that new
    reality. Otherwise everything still passes, and my other tests look fine
    too.
    
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
    91539833