From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Patrick Steinhardt <ps@pks.im>,
"brian m. carlson" <sandals@crustytoothpaste.net>
Subject: Re: [PATCH 1/7] hash: use git_hash_init() consistently
Date: Tue, 07 Jul 2026 07:39:24 -0700 [thread overview]
Message-ID: <xmqq5x2q984j.fsf@gitster.g> (raw)
In-Reply-To: <20260707050141.GA1288294@coredump.intra.peff.net> (Jeff King's message of "Tue, 7 Jul 2026 01:01:41 -0400")
Jeff King <peff@peff.net> writes:
> We'd like to add more logic to git_hash_init(), but many callers skip it
> and call algop->init_fn() directly. Let's make sure we're consistently
> using the wrapper by adding a coccinelle rule.
>
> Besides the coccinelle file itself, this is a purely mechanical
> conversion based on the patch it generates. There should be no bare
> init_fn() calls left (except for the one in the wrapper).
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> It feels like the "expression ALGO" in the rule should be a
> "git_hash_algo", but I had trouble getting coccinelle to recognize all
> cases when I did that. Probably not worth digging too far into, as
> the presence of the git_hash_ctx type means we should never hit any
> false positives.
Thanks. May conversions do look simple and straight-forward, but
some look a bit curious.
> diff --git a/object-file.c b/object-file.c
> index e3c68cfb66..f292683c2d 100644
> --- a/object-file.c
> +++ b/object-file.c
> ...
> - algo->init_fn(c);
> - if (compat && compat_c)
> - compat->init_fn(compat_c);
> + git_hash_init(c, algo);
> + if (compat && compat_c) {
> + git_hash_init(compat_c, compat);
> + }
For example, it is a mystery how Coccinelle decided to add a pair of
braces around this single statement. It should be obvious that the
corresponding single statement in the original did not need one.
> diff --git a/rerere.c b/rerere.c
> index 8232542585..2e932439a4 100644
> --- a/rerere.c
> +++ b/rerere.c
> @@ -438,8 +438,9 @@ static int handle_path(unsigned char *hash, struct rerere_io *io, int marker_siz
> struct git_hash_ctx ctx;
> struct strbuf buf = STRBUF_INIT, out = STRBUF_INIT;
> int has_conflicts = 0;
> - if (hash)
> - the_hash_algo->init_fn(&ctx);
> + if (hash) {
> + git_hash_init(&ctx, the_hash_algo);
> + }
Ditto.
next prev parent reply other threads:[~2026-07-07 14:39 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 4:55 [PATCH 0/7] git_hash_*() quality-of-life improvements Jeff King
2026-07-07 5:01 ` [PATCH 1/7] hash: use git_hash_init() consistently Jeff King
2026-07-07 14:39 ` Junio C Hamano [this message]
2026-07-07 20:13 ` Jeff King
2026-07-07 20:17 ` Junio C Hamano
2026-07-07 20:25 ` Jeff King
2026-07-07 21:25 ` brian m. carlson
2026-07-08 3:54 ` Jeff King
2026-07-07 5:04 ` [PATCH 2/7] hash: convert remaining direct function calls Jeff King
2026-07-07 16:15 ` Junio C Hamano
2026-07-07 5:05 ` [PATCH 3/7] hash: document function pointers and wrappers Jeff King
2026-07-07 14:26 ` Patrick Steinhardt
2026-07-07 20:05 ` Jeff King
2026-07-07 5:07 ` [PATCH 4/7] hash: make git_hash_discard() idempotent Jeff King
2026-07-07 16:22 ` Junio C Hamano
2026-07-07 20:18 ` Jeff King
2026-07-07 21:41 ` brian m. carlson
2026-07-07 22:25 ` Junio C Hamano
2026-07-07 5:07 ` [PATCH 5/7] csum-file: use idempotent git_hash_discard() Jeff King
2026-07-07 5:08 ` [PATCH 6/7] http: " Jeff King
2026-07-07 16:25 ` Junio C Hamano
2026-07-07 5:09 ` [PATCH 7/7] hash: check ctx->active flag in all wrapper functions Jeff King
2026-07-07 14:26 ` Patrick Steinhardt
2026-07-07 16:33 ` Junio C Hamano
2026-07-07 20:10 ` Jeff King
2026-07-07 14:26 ` [PATCH 0/7] git_hash_*() quality-of-life improvements Patrick Steinhardt
2026-07-08 3:52 ` [PATCH v2 " Jeff King
2026-07-08 3:52 ` [PATCH v2 1/7] hash: use git_hash_init() consistently Jeff King
2026-07-08 3:52 ` [PATCH v2 2/7] hash: convert remaining direct function calls Jeff King
2026-07-08 3:52 ` [PATCH v2 3/7] hash: document function pointers and wrappers Jeff King
2026-07-08 3:52 ` [PATCH v2 4/7] hash: make git_hash_discard() idempotent Jeff King
2026-07-08 3:53 ` [PATCH v2 5/7] csum-file: use idempotent git_hash_discard() Jeff King
2026-07-08 3:53 ` [PATCH v2 6/7] http: " Jeff King
2026-07-08 3:53 ` [PATCH v2 7/7] hash: check ctx->active flag in all wrapper functions Jeff King
2026-07-08 8:05 ` [PATCH v2 0/7] git_hash_*() quality-of-life improvements Patrick Steinhardt
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=xmqq5x2q984j.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=ps@pks.im \
--cc=sandals@crustytoothpaste.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.