shortlog: disallow left-over arguments outside repo
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 <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Martin Ågren committed
Mar 14, 2018 at 22:34 UTC
4aa0161e837ef19e52f3bc65471d9ec0f857e20d
2 files changed
+10
builtin/shortlog.c
+5
@@ -293,6 +293,11 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
293
parse_done:
294
argc = parse_options_end(&ctx);
295
296
+ if (nongit && argc > 1) {
297
+ error(_("too many arguments given outside repository"));
298
+ usage_with_options(shortlog_usage, options);
299
+ }
300
+
301
if (setup_revisions(argc, argv, &rev, NULL) != 1) {
302
error(_("unrecognized argument: %s"), argv[1]);
303
usage_with_options(shortlog_usage, options);
t/t4201-shortlog.sh
+5
@@ -127,6 +127,11 @@ test_expect_success !MINGW 'shortlog can read --format=raw output' '
127
test_cmp expect out
128
'
129
130
+test_expect_success 'shortlog from non-git directory refuses extra arguments' '
131
+ test_must_fail env GIT_DIR=non-existing git shortlog foo 2>out &&
132
+ test_i18ngrep "too many arguments" out
133
+'
134
+
135
test_expect_success 'shortlog should add newline when input line matches wraplen' '
136
cat >expect <<\EOF &&
137
A U Thor (2):