Thread (35 messages) 35 messages, 4 authors, 3d ago

Re: [PATCH 1/7] hash: use git_hash_init() consistently

From: Junio C Hamano <hidden>
Date: 2026-07-07 14:39:27

Jeff King [off-list ref] 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 <redacted>
---
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.
quoted hunk ↗ jump to hunk
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.
quoted hunk ↗ jump to hunk
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help