diff options
| author | Patrick Steinhardt <ps@pks.im> | 2025-07-17 06:56:40 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-07-16 22:16:17 -0700 |
| commit | 0df005353aca4e490478a4e8c2d090728599868e (patch) | |
| tree | 25e7352de22a170fa7aabdc27130fbd227517df2 /object-file.c | |
| parent | object-file: get rid of `the_repository` in loose object iterators (diff) | |
| download | git-0df005353aca4e490478a4e8c2d090728599868e.tar.gz git-0df005353aca4e490478a4e8c2d090728599868e.zip | |
object-file: get rid of `the_repository` in `read_loose_object()`
The function `read_loose_object()` takes a path to an object file and
tries to parse it. As such, the function does not depend on any specific
object database but instead acts as an ODB-independent way to read a
specific file. As such, all it needs as input is a repository so that we
can derive repo settings and the hash algorithm.
That repository isn't passed in as a parameter though, as we implicitly
depend on the global `the_repository`. Refactor the function so that we
pass in the repository as a parameter.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object-file.c')
| -rw-r--r-- | object-file.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/object-file.c b/object-file.c index b894379d22..f7c07acadc 100644 --- a/object-file.c +++ b/object-file.c @@ -1535,7 +1535,8 @@ static int check_stream_oid(git_zstream *stream, return 0; } -int read_loose_object(const char *path, +int read_loose_object(struct repository *repo, + const char *path, const struct object_id *expected_oid, struct object_id *real_oid, void **contents, @@ -1574,9 +1575,9 @@ int read_loose_object(const char *path, } if (*oi->typep == OBJ_BLOB && - *size > repo_settings_get_big_file_threshold(the_repository)) { + *size > repo_settings_get_big_file_threshold(repo)) { if (check_stream_oid(&stream, hdr, *size, path, expected_oid, - the_repository->hash_algo) < 0) + repo->hash_algo) < 0) goto out_inflate; } else { *contents = unpack_loose_rest(&stream, hdr, *size, expected_oid); @@ -1584,7 +1585,7 @@ int read_loose_object(const char *path, error(_("unable to unpack contents of %s"), path); goto out_inflate; } - hash_object_file(the_repository->hash_algo, + hash_object_file(repo->hash_algo, *contents, *size, *oi->typep, real_oid); if (!oideq(expected_oid, real_oid)) |
