Here's v3 of this series. CI should now pass as the code has been moved below any declarations. The regression test has been simplified, thanks to Eric's input. I added another commit with a test for git-shortlog(1) that makes sure it can process logs obtained from a repo with --object-format=sha256. Thanks to Patrick for the suggestion and pointers. Wolfgang Müller (2): builtin/shortlog: explicitly set hash algo when there is no repo shortlog: Test reading a log from a SHA256 repo in a non-git directory builtin/shortlog.c | 12 ++++++++++++ t/t4201-shortlog.sh | 12 ++++++++++++ 2 files changed, 24 insertions(+) Range-diff against v2: 1: d3047a0291 ! 1: 4813b458ac builtin/shortlog: explicitly set hash algo when there is no repo @@ Commit message add a regression test for the segfault. Signed-off-by: Wolfgang Müller <wolf@oriole.systems> + Thanks-to: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> ## builtin/shortlog.c ## @@ builtin/shortlog.c: int cmd_shortlog(int argc, - struct rev_info rev; - int nongit = !startup_info->have_repository; + + struct parse_opt_ctx_t ctx; + /* + * NEEDSWORK: Later on we'll call parse_revision_opt which relies on @@ builtin/shortlog.c: int cmd_shortlog(int argc, + if (nongit && !the_hash_algo) + repo_set_hash_algo(the_repository, GIT_HASH_SHA1); + - const struct option options[] = { - OPT_BIT('c', "committer", &log.groups, - N_("group by committer rather than author"), + git_config(git_default_config, NULL); + shortlog_init(&log); + repo_init_revisions(the_repository, &rev, prefix); ## t/t4201-shortlog.sh ## @@ t/t4201-shortlog.sh: fuzz() @@ t/t4201-shortlog.sh: fuzz() ' +test_expect_success 'shortlog --author from non-git directory does not segfault' ' -+ git log --no-expand-tabs HEAD >log && -+ env GIT_DIR=non-existing git shortlog --author=author <log 2>out ++ echo | nongit git shortlog --author=author +' + test_expect_success 'shortlog should add newline when input line matches wraplen' ' -: ---------- > 2: 9dfdc7510f shortlog: Test reading a log from a SHA256 repo in a non-git directory -- 2.47.0