From: "Wolfgang Müller" <wolf@oriole.systems>
To: git@vger.kernel.org
Cc: "Wolfgang Müller" <wolf@oriole.systems>
Subject: [RFC PATCH] builtin/shortlog: explicitly set hash algo when there is no repo
Date: Fri, 11 Oct 2024 20:34:45 +0200 [thread overview]
Message-ID: <20241011183445.229228-1-wolf@oriole.systems> (raw)
Whilst git-shortlog(1) does not explicitly need any repository
information when run without reference to one, it still parses some of
its arguments with parse_revision_opt() which assumes that the hash
algorithm is set. However, in c8aed5e8da (repository: stop setting SHA1
as the default object hash, 2024-05-07) we stopped setting up a default
hash algorithm and instead require commands to set it up explicitly.
This was done for most other commands like in ab274909d4 (builtin/diff:
explicitly set hash algo when there is no repo, 2024-05-07) but was
missed for builtin/shortlog, making git-shortlog(1) segfault outside of
a repository when given arguments like --author that trigger a call to
parse_revision_opt().
Fix this for now by explicitly setting the hash algorithm to SHA1.
Signed-off-by: Wolfgang Müller <wolf@oriole.systems>
---
I think there is a much cleaner patch here if one would look at
disentangling the parsing machinery split between cmd_shortlog() and
parse_revision_opt() such that the latter is only called if there is an
actual repository, but I'm not at all familiar enough with the codebase
to do that. Like the commit says some other commands were fixed like
this as well, so I thought to send this patch your way.
builtin/shortlog.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 3ed5c46078..6422f088b2 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -387,6 +387,14 @@ int cmd_shortlog(int argc,
struct rev_info rev;
int nongit = !startup_info->have_repository;
+ /*
+ * Later on we'll call parse_revision_opt which relies on the hash
+ * algorithm being set but since we are operating outside of a Git
+ * repository we cannot determine one. For now default to SHA1.
+ */
+ 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"),
base-commit: 777489f9e09c8d0dd6b12f9d90de6376330577a2
--
2.47.0
next reply other threads:[~2024-10-11 18:40 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-11 18:34 Wolfgang Müller [this message]
2024-10-15 9:33 ` [RFC PATCH] builtin/shortlog: explicitly set hash algo when there is no repo Wolfgang Müller
2024-10-15 9:47 ` Kristoffer Haugsbakk
2024-10-15 19:54 ` Taylor Blau
2024-10-15 23:28 ` Taylor Blau
2024-10-16 8:15 ` Wolfgang Müller
2024-10-16 18:28 ` Taylor Blau
2024-10-15 11:48 ` [RFC PATCH v2] " Wolfgang Müller
2024-10-15 17:20 ` Eric Sunshine
2024-10-15 17:51 ` Wolfgang Müller
2024-10-16 5:32 ` Patrick Steinhardt
2024-10-16 8:47 ` Wolfgang Müller
2024-10-16 8:57 ` Patrick Steinhardt
2024-10-16 9:07 ` Wolfgang Müller
2024-10-16 18:52 ` Taylor Blau
2024-10-16 19:01 ` Wolfgang Müller
2024-10-17 5:04 ` Patrick Steinhardt
2024-10-16 9:48 ` Wolfgang Müller
2024-10-16 19:01 ` Taylor Blau
2024-10-16 19:14 ` Wolfgang Müller
2024-10-16 18:21 ` [PATCH v3 0/2] " Wolfgang Müller
2024-10-16 18:21 ` [PATCH v3 1/2] " Wolfgang Müller
2024-10-16 19:22 ` Taylor Blau
2024-10-16 19:37 ` Wolfgang Müller
2024-10-17 11:58 ` Patrick Steinhardt
2024-10-17 12:09 ` Wolfgang Müller
2024-10-17 12:11 ` Patrick Steinhardt
2024-10-16 18:21 ` [PATCH v3 2/2] shortlog: Test reading a log from a SHA256 repo in a non-git directory Wolfgang Müller
2024-10-16 19:25 ` Taylor Blau
2024-10-16 19:35 ` Wolfgang Müller
2024-10-16 19:45 ` Taylor Blau
2024-10-16 19:32 ` [PATCH v3 0/2] builtin/shortlog: explicitly set hash algo when there is no repo Taylor Blau
2024-10-16 19:38 ` Wolfgang Müller
2024-10-17 9:35 ` [PATCH v4] " Wolfgang Müller
2024-10-17 20:10 ` Taylor Blau
2024-10-17 22:02 ` Wolfgang Müller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241011183445.229228-1-wolf@oriole.systems \
--to=wolf@oriole.systems \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).