shortlog: allow --exclude=<glob> to be passed
authorJunio C Hamano <gitster@pobox.com>
Fri, 30 May 2014 19:57:25 +0000 (12:57 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Jun 2014 20:41:33 +0000 (13:41 -0700)
These two commands are supposed to be equivalent:

$ git log --exclude=refs/notes/\* --all --no-merges --since=2.days |
git shortlog
$ git shortlog --exclude=refs/notes/\* --all --no-merges --since=2.days

However, the latter does not understand the ref-exclusion command
line option, even though other options understood by "log", such as
"--all" and "--no-merges", are understood.

This was because e7b432c5 (revision: introduce --exclude=<glob> to
tame wildcards, 2013-08-30) did not wire the new option fully to the
machinery. A new option understood by handle_revision_pseudo_opt()
must be told to handle_revision_opt() as well.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
revision.c
t/t4201-shortlog.sh
index 3e8287425d65024c177da88eaa90880fe37e33c5..9daaf35801106ea33547b5389953890fa76bbaa1 100644 (file)
@@ -1612,6 +1612,7 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
            !strcmp(arg, "--reflog") || !strcmp(arg, "--not") ||
            !strcmp(arg, "--no-walk") || !strcmp(arg, "--do-walk") ||
            !strcmp(arg, "--bisect") || !prefixcmp(arg, "--glob=") ||
+           !prefixcmp(arg, "--exclude=") ||
            !prefixcmp(arg, "--branches=") || !prefixcmp(arg, "--tags=") ||
            !prefixcmp(arg, "--remotes=") || !prefixcmp(arg, "--no-walk="))
        {
index 5493500ef15d2f561bd14ca0bdf5f519ec6f49be..a702bb5bf7e8b45cb0be2c30f7eb4322d792fcd2 100755 (executable)
@@ -172,4 +172,10 @@ test_expect_success 'shortlog encoding' '
        git shortlog HEAD~2.. > out &&
 test_cmp expect out'
 
+test_expect_success 'shortlog with revision pseudo options' '
+       git shortlog --all &&
+       git shortlog --branches &&
+       git shortlog --exclude=refs/heads/m* --all
+'
+
 test_done