[PATCH v3 0/2] builtin/shortlog: explicitly set hash algo when there is no repo
- From
Wolfgang Müller <wolf@oriole.systems>
- Date
- Oct 16, 2024, 18:21 UTC
- Message-ID
- <20241016182124.48148-1-wolf@oriole.systems>
- In-Reply-To
- <20241011183445.229228-1-wolf@oriole.systems>
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@sunshineco.com>
## 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