# [PATCH] tree-diff: remove the usage of the_hash_algo global

2 messages from 2026-02-20 to 2026-02-20. Participants: Shreyansh Paliwal, Junio C Hamano.
Thread: https://gitlist.dev/t/65031

## Shreyansh Paliwal, 2026-02-20 17:51

Subject: [PATCH] tree-diff: remove the usage of the_hash_algo global
Message-ID: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>
URL: https://gitlist.dev/e/20260220175331.1250726-1-shreyanshpaliwalcmsmn%40gmail.com

```
emit_path() uses the global the_hash_algo even though a local repository is
already available via struct diff_options *opt.

Replace these uses with opt->repo->hash_algo. With no remaining reliance on
global states in this file, drop the dependency on 'environment.h' and remove
'#define USE_THE_REPOSITORY_VARIABLE'.

This follows earlier cleanups to introduce opt->repo in tree-diff.c [1][2].

[1]- https://lore.kernel.org/git/20180921155739.14407-21-pclouds@gmail.com/
[2]- https://lore.kernel.org/git/20260109213021.2546-2-l.s.r@web.de/

Signed-off-by: Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com>
---
 tree-diff.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/tree-diff.c b/tree-diff.c
index 631ea86812..2f5c956d02 100644
--- a/tree-diff.c
+++ b/tree-diff.c
@@ -2,7 +2,6 @@
  * Helper functions for tree diff generation
  */
 
-#define USE_THE_REPOSITORY_VARIABLE
 #define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
@@ -11,7 +10,6 @@
 #include "hash.h"
 #include "tree.h"
 #include "tree-walk.h"
-#include "environment.h"
 #include "repository.h"
 #include "dir.h"
 
@@ -253,7 +251,7 @@ static void emit_path(struct combine_diff_path ***tail,
 
 		strbuf_add(base, path, pathlen);
 		p = combine_diff_path_new(base->buf, base->len, mode,
-					  oid ? oid : null_oid(the_hash_algo),
+					  oid ? oid : null_oid(opt->repo->hash_algo),
 					  nparent);
 		strbuf_setlen(base, old_baselen);
 
@@ -278,7 +276,7 @@ static void emit_path(struct combine_diff_path ***tail,
 				mode_i = tp[i].entry.mode;
 			}
 			else {
-				oid_i = null_oid(the_hash_algo);
+				oid_i = null_oid(opt->repo->hash_algo);
 				mode_i = 0;
 			}
 
-- 
2.53.0


```

## Junio C Hamano, 2026-02-20 20:21

Subject: Re: [PATCH] tree-diff: remove the usage of the_hash_algo global
Message-ID: <xmqq342vxj1y.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqq342vxj1y.fsf%40gitster.g
In-Reply-To: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>

```
Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com> writes:

> emit_path() uses the global the_hash_algo even though a local repository is
> already available via struct diff_options *opt.
>
> Replace these uses with opt->repo->hash_algo. With no remaining reliance on
> global states in this file, drop the dependency on 'environment.h' and remove
> '#define USE_THE_REPOSITORY_VARIABLE'.
>
> This follows earlier cleanups to introduce opt->repo in tree-diff.c [1][2].
>
> [1]- https://lore.kernel.org/git/20180921155739.14407-21-pclouds@gmail.com/
> [2]- https://lore.kernel.org/git/20260109213021.2546-2-l.s.r@web.de/
>
> Signed-off-by: Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com>
> ---
>  tree-diff.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)

Nice.  Will queue.  Thanks.

```
