aboutsummaryrefslogtreecommitdiff
path: root/revision.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2011-03-29 16:59:42 -0400
committerJunio C Hamano <gitster@pobox.com>2011-03-29 14:39:24 -0700
commit92e0d42539a34e90f5c9bf29eb741f0d87173027 (patch)
tree8eead1847476de332ab32cf9d8dcba88a89d21f3 /revision.c
parent7249e91287443c02b2c7eed272a579dae44984ad (diff)
downloadgit-92e0d42539a34e90f5c9bf29eb741f0d87173027.tar.gz
git-92e0d42539a34e90f5c9bf29eb741f0d87173027.tar.xz
revision.c: make --no-notes reset --notes list
With most command line options, later instances of an option override earlier ones. With cumulative options like "--notes", however, there is no way to say "forget the --notes I gave you before". Let's have --no-notes trigger this forgetting, so that: git log --notes=foo --no-notes --notes=bar will show only the "bar" notes. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
-rw-r--r--revision.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/revision.c b/revision.c
index c4ffee464..541f09e21 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;