diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-16 03:39:00 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-16 03:39:00 -0700 |
commit | d2b9b5f5bb411ce69acd251915d3b92748f110a9 (patch) | |
tree | 9cb11d01385b902f5acf5135e7ba96fe66c65c52 | |
parent | Merge branch 'jc/pager-cat' into next (diff) | |
parent | log/whatchanged/show - log formatting cleanup. (diff) | |
download | tgif-d2b9b5f5bb411ce69acd251915d3b92748f110a9.tar.xz |
Merge branch 'lt/logopt' into next
* lt/logopt:
log/whatchanged/show - log formatting cleanup.
Simplify common default options setup for built-in log family.
-rw-r--r-- | git.c | 59 | ||||
-rw-r--r-- | log-tree.c | 3 | ||||
-rw-r--r-- | revision.h | 1 |
3 files changed, 36 insertions, 27 deletions
@@ -286,6 +286,10 @@ static int cmd_log_wc(int argc, const char **argv, char **envp, const char *commit_prefix = "commit "; int shown = 0; + rev->abbrev = DEFAULT_ABBREV; + rev->commit_format = CMIT_FMT_DEFAULT; + argc = setup_revisions(argc, argv, rev, "HEAD"); + if (argc > 1) die("unrecognized argument: %s", argv[1]); if (rev->commit_format == CMIT_FMT_ONELINE) @@ -294,16 +298,20 @@ static int cmd_log_wc(int argc, const char **argv, char **envp, prepare_revision_walk(rev); setup_pager(); while ((commit = get_revision(rev)) != NULL) { + unsigned long ofs = 0; + if (shown && rev->diff && rev->commit_format != CMIT_FMT_ONELINE) putchar('\n'); - fputs(commit_prefix, stdout); + + ofs = sprintf(buf, "%s", commit_prefix); if (rev->abbrev_commit && rev->abbrev) - fputs(find_unique_abbrev(commit->object.sha1, - rev->abbrev), - stdout); + ofs += sprintf(buf + ofs, "%s", + find_unique_abbrev(commit->object.sha1, + rev->abbrev)); else - fputs(sha1_to_hex(commit->object.sha1), stdout); + ofs += sprintf(buf + ofs, "%s", + sha1_to_hex(commit->object.sha1)); if (rev->parents) { struct commit_list *parents = commit->parents; while (parents) { @@ -311,7 +319,8 @@ static int cmd_log_wc(int argc, const char **argv, char **envp, parents = parents->next; if (o->flags & TMP_MARK) continue; - printf(" %s", sha1_to_hex(o->sha1)); + ofs += sprintf(buf + ofs, " %s", + sha1_to_hex(o->sha1)); o->flags |= TMP_MARK; } /* TMP_MARK is a general purpose flag that can @@ -323,17 +332,20 @@ static int cmd_log_wc(int argc, const char **argv, char **envp, parents = parents->next) parents->item->object.flags &= ~TMP_MARK; } - if (rev->commit_format == CMIT_FMT_ONELINE) - putchar(' '); - else - putchar('\n'); - pretty_print_commit(rev->commit_format, commit, ~0, buf, - LOGSIZE, rev->abbrev); - printf("%s\n", buf); + buf[ofs++] = + (rev->commit_format == CMIT_FMT_ONELINE) ? ' ' : '\n'; + ofs += pretty_print_commit(rev->commit_format, commit, ~0, + buf + ofs, + LOGSIZE - ofs - 20, + rev->abbrev); + if (rev->diff) { - printf("--\n"); + rev->use_precomputed_header = buf; + strcpy(buf + ofs, "\n---\n"); log_tree_commit(rev, commit); } + else + printf("%s\n", buf); shown = 1; free(commit->buffer); commit->buffer = NULL; @@ -347,12 +359,8 @@ static int cmd_wc(int argc, const char **argv, char **envp) struct rev_info rev; init_revisions(&rev); - rev.abbrev = DEFAULT_ABBREV; - rev.no_commit_id = 1; - rev.commit_format = CMIT_FMT_DEFAULT; rev.diff = 1; rev.diffopt.recursive = 1; - argc = setup_revisions(argc, argv, &rev, "HEAD"); return cmd_log_wc(argc, argv, envp, &rev); } @@ -362,14 +370,11 @@ static int cmd_show(int argc, const char **argv, char **envp) init_revisions(&rev); rev.diff = 1; - rev.ignore_merges = 0; + rev.diffopt.recursive = 1; rev.combine_merges = 1; rev.dense_combined_merges = 1; - rev.abbrev = DEFAULT_ABBREV; - rev.commit_format = CMIT_FMT_DEFAULT; - rev.diffopt.recursive = 1; + rev.ignore_merges = 0; rev.no_walk = 1; - argc = setup_revisions(argc, argv, &rev, "HEAD"); return cmd_log_wc(argc, argv, envp, &rev); } @@ -378,10 +383,10 @@ static int cmd_log(int argc, const char **argv, char **envp) struct rev_info rev; init_revisions(&rev); - rev.abbrev = DEFAULT_ABBREV; - rev.no_commit_id = 1; - rev.commit_format = CMIT_FMT_DEFAULT; - argc = setup_revisions(argc, argv, &rev, "HEAD"); + rev.always_show_header = 1; + rev.diffopt.recursive = 1; + rev.combine_merges = 1; + rev.ignore_merges = 0; return cmd_log_wc(argc, argv, envp, &rev); } diff --git a/log-tree.c b/log-tree.c index 04a68e0f57..7d9f41ede1 100644 --- a/log-tree.c +++ b/log-tree.c @@ -54,6 +54,9 @@ static const char *generate_header(struct rev_info *opt, int abbrev = opt->diffopt.abbrev; const char *msg = commit->buffer; + if (opt->use_precomputed_header) + return opt->use_precomputed_header; + if (!opt->verbose_header) return sha1_to_hex(commit_sha1); diff --git a/revision.h b/revision.h index 7b854866b2..74dc5ef179 100644 --- a/revision.h +++ b/revision.h @@ -56,6 +56,7 @@ struct rev_info { enum cmit_fmt commit_format; const char *header_prefix; const char *header; + const char *use_precomputed_header; /* special limits */ int max_count; |