diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2006-11-21 21:12:06 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-11-21 14:31:15 -0800 |
commit | 6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c (patch) | |
tree | c9e9677483c7f0e6dc301f0181b64d9a5e48cd5c | |
parent | 549652361b7fea5a5e9046571c9f0bc4a7d5d6ef (diff) | |
download | git-6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c.tar.gz git-6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c.tar.xz |
shortlog: fix "-n"
Since it is now a builtin optionally taking a range, we have to parse
the options before the rev machinery, to be able to shadow the short
hand "-n" for "--max-count".
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | builtin-shortlog.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/builtin-shortlog.c b/builtin-shortlog.c index 4775c110f..1456e1a19 100644 --- a/builtin-shortlog.c +++ b/builtin-shortlog.c @@ -15,11 +15,11 @@ static int compare_by_number(const void *a1, const void *a2) const struct path_list *l1 = i1->util, *l2 = i2->util; if (l1->nr < l2->nr) - return -1; + return 1; else if (l1->nr == l2->nr) return 0; else - return +1; + return -1; } static struct path_list mailmap = {NULL, 0, 0, 0}; @@ -251,8 +251,7 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) struct path_list list = { NULL, 0, 0, 1 }; int i, j, sort_by_number = 0, summary = 0; - init_revisions(&rev, prefix); - argc = setup_revisions(argc, argv, &rev, NULL); + /* since -n is a shadowed rev argument, parse our args first */ while (argc > 1) { if (!strcmp(argv[1], "-n") || !strcmp(argv[1], "--numbered")) sort_by_number = 1; @@ -262,10 +261,14 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) else if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) usage(shortlog_usage); else - die ("unrecognized argument: %s", argv[1]); + break; argv++; argc--; } + init_revisions(&rev, prefix); + argc = setup_revisions(argc, argv, &rev, NULL); + if (argc > 1) + die ("unrecognized argument: %s", argv[1]); if (!access(".mailmap", R_OK)) read_mailmap(".mailmap"); @@ -278,7 +281,7 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) get_from_rev(&rev, &list); if (sort_by_number) - qsort(list.items, sizeof(struct path_list_item), list.nr, + qsort(list.items, list.nr, sizeof(struct path_list_item), compare_by_number); for (i = 0; i < list.nr; i++) { |