# [PATCH] split-index: stop using the_repository and the_hash_algo

2 messages from 2026-03-19 to 2026-03-19. Participants: René Scharfe, Junio C Hamano.
Thread: https://gitlist.dev/t/65306

## René Scharfe, 2026-03-19 18:48

Subject: [PATCH] split-index: stop using the_repository and the_hash_algo
Message-ID: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>
URL: https://gitlist.dev/e/944c2331-4dec-4c98-9059-f41dc204ed86%40web.de

```
Reference the hash algorithm of the passed-in index throughout the code.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
Low-hanging fruit..

 split-index.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/split-index.c b/split-index.c
index 4c74c4adda..6ba210738c 100644
--- a/split-index.c
+++ b/split-index.c
@@ -1,4 +1,3 @@
-#define USE_THE_REPOSITORY_VARIABLE
 #define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
@@ -6,6 +5,7 @@
 #include "hash.h"
 #include "mem-pool.h"
 #include "read-cache-ll.h"
+#include "repository.h"
 #include "split-index.h"
 #include "strbuf.h"
 #include "ewah/ewok.h"
@@ -25,16 +25,17 @@ struct split_index *init_split_index(struct index_state *istate)
 int read_link_extension(struct index_state *istate,
 			 const void *data_, unsigned long sz)
 {
+	const struct git_hash_algo *algo = istate->repo->hash_algo;
 	const unsigned char *data = data_;
 	struct split_index *si;
 	int ret;
 
-	if (sz < the_hash_algo->rawsz)
+	if (sz < algo->rawsz)
 		return error("corrupt link extension (too short)");
 	si = init_split_index(istate);
-	oidread(&si->base_oid, data, the_repository->hash_algo);
-	data += the_hash_algo->rawsz;
-	sz -= the_hash_algo->rawsz;
+	oidread(&si->base_oid, data, algo);
+	data += algo->rawsz;
+	sz -= algo->rawsz;
 	if (!sz)
 		return 0;
 	si->delete_bitmap = ewah_new();
@@ -56,7 +57,7 @@ int write_link_extension(struct strbuf *sb,
 			 struct index_state *istate)
 {
 	struct split_index *si = istate->split_index;
-	strbuf_add(sb, si->base_oid.hash, the_hash_algo->rawsz);
+	strbuf_add(sb, si->base_oid.hash, istate->repo->hash_algo->rawsz);
 	if (!si->delete_bitmap && !si->replace_bitmap)
 		return 0;
 	ewah_serialize_strbuf(si->delete_bitmap, sb);
-- 
2.53.0

```

## Junio C Hamano, 2026-03-19 19:01

Subject: Re: [PATCH] split-index: stop using the_repository and the_hash_algo
Message-ID: <xmqqqzpfk5ja.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqqzpfk5ja.fsf%40gitster.g
In-Reply-To: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>

```
René Scharfe <l.s.r@web.de> writes:

> Reference the hash algorithm of the passed-in index throughout the code.
>
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
> Low-hanging fruit..

Indeed.

>
>  split-index.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/split-index.c b/split-index.c
> index 4c74c4adda..6ba210738c 100644
> --- a/split-index.c
> +++ b/split-index.c
> @@ -1,4 +1,3 @@
> -#define USE_THE_REPOSITORY_VARIABLE
>  #define DISABLE_SIGN_COMPARE_WARNINGS
>  
>  #include "git-compat-util.h"
> @@ -6,6 +5,7 @@
>  #include "hash.h"
>  #include "mem-pool.h"
>  #include "read-cache-ll.h"
> +#include "repository.h"
>  #include "split-index.h"
>  #include "strbuf.h"
>  #include "ewah/ewok.h"
> @@ -25,16 +25,17 @@ struct split_index *init_split_index(struct index_state *istate)
>  int read_link_extension(struct index_state *istate,
>  			 const void *data_, unsigned long sz)
>  {
> +	const struct git_hash_algo *algo = istate->repo->hash_algo;
>  	const unsigned char *data = data_;
>  	struct split_index *si;
>  	int ret;
>  
> -	if (sz < the_hash_algo->rawsz)
> +	if (sz < algo->rawsz)
>  		return error("corrupt link extension (too short)");
>  	si = init_split_index(istate);
> -	oidread(&si->base_oid, data, the_repository->hash_algo);
> -	data += the_hash_algo->rawsz;
> -	sz -= the_hash_algo->rawsz;
> +	oidread(&si->base_oid, data, algo);
> +	data += algo->rawsz;
> +	sz -= algo->rawsz;
>  	if (!sz)
>  		return 0;
>  	si->delete_bitmap = ewah_new();
> @@ -56,7 +57,7 @@ int write_link_extension(struct strbuf *sb,
>  			 struct index_state *istate)
>  {
>  	struct split_index *si = istate->split_index;
> -	strbuf_add(sb, si->base_oid.hash, the_hash_algo->rawsz);
> +	strbuf_add(sb, si->base_oid.hash, istate->repo->hash_algo->rawsz);
>  	if (!si->delete_bitmap && !si->replace_bitmap)
>  		return 0;
>  	ewah_serialize_strbuf(si->delete_bitmap, sb);

```
