summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2006-11-21 20:12:06 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-11-21 22:31:15 (GMT)
commit6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c (patch)
treec9e9677483c7f0e6dc301f0181b64d9a5e48cd5c
parent549652361b7fea5a5e9046571c9f0bc4a7d5d6ef (diff)
downloadgit-6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c.zip
git-6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c.tar.gz
git-6d6ab6104a5055b9f66cc9a80d55d2ef59d0763c.tar.bz2
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.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/builtin-shortlog.c b/builtin-shortlog.c
index 4775c11..1456e1a 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++) {