From a8210328f4db27cc119178b33e9512f8fcbba35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C3=85gren?= Date: Sat, 10 Mar 2018 12:52:10 +0100 Subject: git-shortlog.txt: reorder usages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first usage we give is the original one where, e.g., `git log` is piped through `git shortlog`. The description that follows reads the other way round, by first focusing on the general behavior, then ending with the behavior when reading from stdin. It is also a tiny bit odd that what is probably the most common usage and the one a reader is probably looking for is not at the top of the list. Of course, it is only a two-item list, so it is not _that_ hard to find... The next commit will add the original usage to the usage string in builtin/shortlog.c, and it feels more natural to do so below the most common usage. To avoid being inconsistent, reorder these two usages here first. Signed-off-by: Martin Ågren Signed-off-by: Junio C Hamano diff --git a/Documentation/git-shortlog.txt b/Documentation/git-shortlog.txt index ee6c547..5e35ea1 100644 --- a/Documentation/git-shortlog.txt +++ b/Documentation/git-shortlog.txt @@ -8,8 +8,8 @@ git-shortlog - Summarize 'git log' output SYNOPSIS -------- [verse] -git log --pretty=short | 'git shortlog' [] 'git shortlog' [] [] [[\--] ...] +git log --pretty=short | 'git shortlog' [] DESCRIPTION ----------- -- cgit v0.10.2-6-g49f6 From cd56d4e5b2ca315d51699984456e50e4c6715f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C3=85gren?= Date: Sat, 10 Mar 2018 12:52:11 +0100 Subject: shortlog: add usage-string for stdin-reading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This has been missing since we learned to print usage, way back in 4e27fb06f (add commit count options to git-shortlog, 2006-10-06). While at it, drop the [] around "...". This matches `git log -h` and Documentation/git-{short}log.txt. It formally makes it look like we do not allow `git shortlog --`, but we gain readability and consistency. Signed-off-by: Martin Ågren Signed-off-by: Junio C Hamano diff --git a/builtin/shortlog.c b/builtin/shortlog.c index e29875b..dc4af03 100644 --- a/builtin/shortlog.c +++ b/builtin/shortlog.c @@ -11,7 +11,8 @@ #include "parse-options.h" static char const * const shortlog_usage[] = { - N_("git shortlog [] [] [[--] [...]]"), + N_("git shortlog [] [] [[--] ...]"), + N_("git log --pretty=short | git shortlog []"), NULL }; -- cgit v0.10.2-6-g49f6 From 4aa0161e837ef19e52f3bc65471d9ec0f857e20d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C3=85gren?= Date: Wed, 14 Mar 2018 22:34:19 +0100 Subject: shortlog: disallow left-over arguments outside repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we are outside a repo and have any arguments left after option-parsing, `setup_revisions()` will try to do its job and something like this will happen: $ git shortlog v2.16.0.. BUG: environment.c:183: git environment hasn't been setup Aborted (core dumped) The usage is wrong, but we could obviously handle this better. Note that commit abe549e179 (shortlog: do not require to run from inside a git repository, 2008-03-14) explicitly enabled `git shortlog` to run from outside a repo, since we do not need a repo for parsing data from stdin. Disallow left-over arguments when run from outside a repo. Signed-off-by: Martin Ågren Signed-off-by: Junio C Hamano diff --git a/builtin/shortlog.c b/builtin/shortlog.c index dc4af03..3a823b3 100644 --- a/builtin/shortlog.c +++ b/builtin/shortlog.c @@ -293,6 +293,11 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) parse_done: argc = parse_options_end(&ctx); + if (nongit && argc > 1) { + error(_("too many arguments given outside repository")); + usage_with_options(shortlog_usage, options); + } + if (setup_revisions(argc, argv, &rev, NULL) != 1) { error(_("unrecognized argument: %s"), argv[1]); usage_with_options(shortlog_usage, options); diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh index da10478..ff6649e 100755 --- a/t/t4201-shortlog.sh +++ b/t/t4201-shortlog.sh @@ -127,6 +127,11 @@ test_expect_success !MINGW 'shortlog can read --format=raw output' ' test_cmp expect out ' +test_expect_success 'shortlog from non-git directory refuses extra arguments' ' + test_must_fail env GIT_DIR=non-existing git shortlog foo 2>out && + test_i18ngrep "too many arguments" out +' + test_expect_success 'shortlog should add newline when input line matches wraplen' ' cat >expect <<\EOF && A U Thor (2): -- cgit v0.10.2-6-g49f6