aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-01-22 16:08:01 -0800
committerJunio C Hamano <gitster@pobox.com>2010-01-22 16:08:01 -0800
commit67bc7407211d26de518811dafc2c1cf2e6124709 (patch)
tree6fffca8665145d1f3164abce6d980f8c537e1343
parentf986eecde1e59fc4cc2b0b761ffc0fe563dad267 (diff)
parent7dccadf363f9d9ff564ad34117266b2d557a2bc8 (diff)
downloadgit-67bc7407211d26de518811dafc2c1cf2e6124709.tar.gz
git-67bc7407211d26de518811dafc2c1cf2e6124709.tar.xz
Merge branch 'jc/maint-limit-note-output'
* jc/maint-limit-note-output: Fix "log --oneline" not to show notes Fix "log" family not to be too agressive about showing notes
-rw-r--r--Documentation/pretty-options.txt8
-rw-r--r--builtin-log.c3
-rw-r--r--commit.h1
-rw-r--r--log-tree.c1
-rw-r--r--pretty.c2
-rw-r--r--revision.c9
-rw-r--r--revision.h3
-rwxr-xr-xt/t3301-notes.sh59
8 files changed, 85 insertions, 1 deletions
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index bff94991b..aa96caeab 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`, `--format` nor `--oneline` option is
+ given on the command line.
diff --git a/builtin-log.c b/builtin-log.c
index 41b6df490..8d16832f7 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)) {
diff --git a/commit.h b/commit.h
index 24128d7a2..3cf516658 100644
--- a/commit.h
+++ b/commit.h
@@ -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 0fdf159f8..27afcf697 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);
diff --git a/pretty.c b/pretty.c
index 9001379a9..d493cade2 100644
--- a/pretty.c
+++ b/pretty.c
@@ -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 25fa14d93..f3b82d97b 100644
--- a/revision.c
+++ b/revision.c
@@ -1161,13 +1161,22 @@ 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);
+ revs->pretty_given = 1;
revs->abbrev_commit = 1;
} else if (!strcmp(arg, "--graph")) {
revs->topo_order = 1;
diff --git a/revision.h b/revision.h
index d36800315..a14deefc2 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 1e34f4836..5d9604b81 100755
--- a/t/t3301-notes.sh
+++ b/t/t3301-notes.sh
@@ -147,4 +147,63 @@ 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 \
+ "" --pretty --pretty=raw --pretty=short --pretty=medium \
+ --pretty=full --pretty=fuller --pretty=format:%s --oneline
+do
+ case "$pretty" in
+ "") p= not= negate="" ;;
+ ?*) p="$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