diff options
-rw-r--r-- | Documentation/pretty-options.txt | 8 | ||||
-rw-r--r-- | builtin-log.c | 3 | ||||
-rw-r--r-- | commit.h | 1 | ||||
-rw-r--r-- | log-tree.c | 1 | ||||
-rw-r--r-- | pretty.c | 2 | ||||
-rw-r--r-- | revision.c | 8 | ||||
-rw-r--r-- | revision.h | 3 | ||||
-rwxr-xr-x | t/t3301-notes.sh | 57 |
8 files changed, 82 insertions, 1 deletions
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt index bff94991b6..1401200920 100644 --- a/Documentation/pretty-options.txt +++ b/Documentation/pretty-options.txt @@ -28,3 +28,11 @@ people using 80-column terminals. command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. + +--no-notes:: +--show-notes:: + Show the notes (see linkgit:git-notes[1]) that annotate the + commit, when showing the commit log message. This is the default + for `git log`, `git show` and `git whatchanged` commands when + there is no `--pretty` nor `--format` option is given on the + command line. diff --git a/builtin-log.c b/builtin-log.c index 1766349550..2cb292fa72 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -58,6 +58,9 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, usage(builtin_log_usage); argc = setup_revisions(argc, argv, rev, "HEAD"); + if (!rev->show_notes_given && !rev->pretty_given) + rev->show_notes = 1; + if (rev->diffopt.pickaxe || rev->diffopt.filter) rev->always_show_header = 0; if (DIFF_OPT_TST(&rev->diffopt, FOLLOW_RENAMES)) { @@ -70,6 +70,7 @@ struct pretty_print_context const char *after_subject; enum date_mode date_mode; int need_8bit_cte; + int show_notes; struct reflog_walk_info *reflog_info; }; diff --git a/log-tree.c b/log-tree.c index 0fdf159f80..27afcf6972 100644 --- a/log-tree.c +++ b/log-tree.c @@ -284,6 +284,7 @@ void show_log(struct rev_info *opt) struct pretty_print_context ctx = {0}; opt->loginfo = NULL; + ctx.show_notes = opt->show_notes; if (!opt->verbose_header) { graph_show_commit(opt->graph); @@ -1094,7 +1094,7 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, if (fmt == CMIT_FMT_EMAIL && sb->len <= beginning_of_body) strbuf_addch(sb, '\n'); - if (fmt != CMIT_FMT_ONELINE) + if (context->show_notes) get_commit_notes(commit, sb, encoding, NOTES_SHOW_HEADER | NOTES_INDENT); diff --git a/revision.c b/revision.c index a8a3c3a4bd..0de78fbad6 100644 --- a/revision.c +++ b/revision.c @@ -1161,10 +1161,18 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg revs->verbose_header = 1; } else if (!strcmp(arg, "--pretty")) { revs->verbose_header = 1; + revs->pretty_given = 1; get_commit_format(arg+8, revs); } else if (!prefixcmp(arg, "--pretty=") || !prefixcmp(arg, "--format=")) { revs->verbose_header = 1; + revs->pretty_given = 1; get_commit_format(arg+9, revs); + } else if (!strcmp(arg, "--show-notes")) { + revs->show_notes = 1; + revs->show_notes_given = 1; + } else if (!strcmp(arg, "--no-notes")) { + revs->show_notes = 0; + revs->show_notes_given = 1; } else if (!strcmp(arg, "--oneline")) { revs->verbose_header = 1; get_commit_format("oneline", revs); diff --git a/revision.h b/revision.h index d368003159..a14deefc25 100644 --- a/revision.h +++ b/revision.h @@ -80,6 +80,9 @@ struct rev_info { /* Format info */ unsigned int shown_one:1, show_merge:1, + show_notes:1, + show_notes_given:1, + pretty_given:1, abbrev_commit:1, use_terminator:1, missing_newline:1, diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh index 1e34f4836f..977d653651 100755 --- a/t/t3301-notes.sh +++ b/t/t3301-notes.sh @@ -147,4 +147,61 @@ test_expect_success 'show -m and -F notes' ' test_cmp expect-m-and-F output ' +cat >expect << EOF +commit 15023535574ded8b1a89052b32673f84cf9582b8 +tree e070e3af51011e47b183c33adf9736736a525709 +parent 1584215f1d29c65e99c6c6848626553fdd07fd75 +author A U Thor <author@example.com> 1112912173 -0700 +committer C O Mitter <committer@example.com> 1112912173 -0700 + + 4th +EOF +test_expect_success 'git log --pretty=raw does not show notes' ' + git log -1 --pretty=raw >output && + test_cmp expect output +' + +cat >>expect <<EOF + +Notes: + spam +$whitespace + xyzzy +$whitespace + foo + bar + baz +EOF +test_expect_success 'git log --show-notes' ' + git log -1 --pretty=raw --show-notes >output && + test_cmp expect output +' + +test_expect_success 'git log --no-notes' ' + git log -1 --no-notes >output && + ! grep spam output +' + +test_expect_success 'git format-patch does not show notes' ' + git format-patch -1 --stdout >output && + ! grep spam output +' + +test_expect_success 'git format-patch --show-notes does show notes' ' + git format-patch --show-notes -1 --stdout >output && + grep spam output +' + +for pretty in "" raw short medium full fuller format:%s +do + case "$pretty" in + "") p= not= negate="" ;; + ?*) p="--pretty=$pretty" not=" not" negate="!" ;; + esac + test_expect_success "git show $pretty does$not show notes" ' + git show $p >output && + eval "$negate grep spam output" + ' +done + test_done |