summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--revision.c6
-rwxr-xr-xt/t3301-notes.sh16
2 files changed, 22 insertions, 0 deletions
diff --git a/revision.c b/revision.c
index c4ffee4649..541f09e218 100644
--- a/revision.c
+++ b/revision.c
@@ -1389,6 +1389,12 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
} else if (!strcmp(arg, "--no-notes")) {
revs->show_notes = 0;
revs->show_notes_given = 1;
+ revs->notes_opt.use_default_notes = -1;
+ /* we have been strdup'ing ourselves, so trick
+ * string_list into free()ing strings */
+ revs->notes_opt.extra_notes_refs.strdup_strings = 1;
+ string_list_clear(&revs->notes_opt.extra_notes_refs, 0);
+ revs->notes_opt.extra_notes_refs.strdup_strings = 0;
} else if (!strcmp(arg, "--standard-notes")) {
revs->show_notes_given = 1;
revs->notes_opt.use_default_notes = 1;
diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh
index f0e7a58123..8600db7edb 100755
--- a/t/t3301-notes.sh
+++ b/t/t3301-notes.sh
@@ -269,6 +269,22 @@ test_expect_success 'git log --notes --notes=X shows both' '
grep alternate output
'
+test_expect_success 'git log --no-notes resets default state' '
+ git log -1 --notes --notes=alternate \
+ --no-notes --notes=alternate \
+ >output &&
+ ! grep xyzzy output &&
+ grep alternate output
+'
+
+test_expect_success 'git log --no-notes resets ref list' '
+ git log -1 --notes --notes=alternate \
+ --no-notes --notes \
+ >output &&
+ grep xyzzy output &&
+ ! grep alternate output
+'
+
test_expect_success 'create -m notes (setup)' '
: > a5 &&
git add a5 &&