Merge branch 'ma/shortlog-revparse'

"git shortlog cruft" aborted with a BUG message when run outside a
Git repository.  The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.

* ma/shortlog-revparse:
  shortlog: disallow left-over arguments outside repo
  shortlog: add usage-string for stdin-reading
  git-shortlog.txt: reorder usages
This commit is contained in:
Junio C Hamano 2018-04-10 08:25:44 +09:00
Родитель a26e1f4b59 4aa0161e83
Коммит 78c20b8fca
3 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -8,8 +8,8 @@ git-shortlog - Summarize 'git log' output
SYNOPSIS SYNOPSIS
-------- --------
[verse] [verse]
git log --pretty=short | 'git shortlog' [<options>]
'git shortlog' [<options>] [<revision range>] [[\--] <path>...] 'git shortlog' [<options>] [<revision range>] [[\--] <path>...]
git log --pretty=short | 'git shortlog' [<options>]
DESCRIPTION DESCRIPTION
----------- -----------

Просмотреть файл

@ -11,7 +11,8 @@
#include "parse-options.h" #include "parse-options.h"
static char const * const shortlog_usage[] = { static char const * const shortlog_usage[] = {
N_("git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"), N_("git shortlog [<options>] [<revision-range>] [[--] <path>...]"),
N_("git log --pretty=short | git shortlog [<options>]"),
NULL NULL
}; };
@ -292,6 +293,11 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
parse_done: parse_done:
argc = parse_options_end(&ctx); 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) { if (setup_revisions(argc, argv, &rev, NULL) != 1) {
error(_("unrecognized argument: %s"), argv[1]); error(_("unrecognized argument: %s"), argv[1]);
usage_with_options(shortlog_usage, options); usage_with_options(shortlog_usage, options);

Просмотреть файл

@ -127,6 +127,11 @@ test_expect_success !MINGW 'shortlog can read --format=raw output' '
test_cmp expect out 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' ' test_expect_success 'shortlog should add newline when input line matches wraplen' '
cat >expect <<\EOF && cat >expect <<\EOF &&
A U Thor (2): A U Thor (2):