diff options
author | Jeff King <peff@peff.net> | 2011-03-29 16:59:42 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-03-29 14:39:24 -0700 |
commit | 92e0d42539a34e90f5c9bf29eb741f0d87173027 (patch) | |
tree | 8eead1847476de332ab32cf9d8dcba88a89d21f3 | |
parent | 7249e91287443c02b2c7eed272a579dae44984ad (diff) | |
download | git-92e0d42539a34e90f5c9bf29eb741f0d87173027.tar.gz |
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>
-rw-r--r-- | revision.c | 6 | ||||
-rwxr-xr-x | t/t3301-notes.sh | 16 |
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 && |