From c5461ee8e90e7af004255b0f3716ac1024e97d4c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 1 Sep 2024 08:26:08 -0700 Subject: [PATCH] verify-pack: fall back to SHA-1 outside a repo In c8aed5e8da (repository: stop setting SHA1 as the default object hash, 2024-05-07), we have stopped setting the default hash algorithm for `the_repository`. Consequently, code that relies on `the_hash_algo` will now crash when it hasn't explicitly been initialized, which may be the case when running outside of a Git repository. As the verify-pack command ought to be able to infer what algorithm is used in the input file (and if the input file does not have such an information, that by itself is a problem), and the command allows an option to explicitly tell what algorithm to use in case it cannot be guessed from the input file, in theory we shouldn't have to use the default algorithm anywhere in the operation of the command, but we fail fairly early in the process when run outside a repository without any default algorithm set. Resurrect the setting of the default algorithm just like we used to do before 2.46.0 Reported-by: Ilya K Signed-off-by: Junio C Hamano --- builtin/verify-pack.c | 4 ++++ t/t5300-pack-object.sh | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/builtin/verify-pack.c b/builtin/verify-pack.c index 011dddd2dc3292..5b663905aea3d9 100644 --- a/builtin/verify-pack.c +++ b/builtin/verify-pack.c @@ -1,6 +1,7 @@ #include "builtin.h" #include "config.h" #include "gettext.h" +#include "hash.h" #include "run-command.h" #include "parse-options.h" #include "strbuf.h" @@ -77,6 +78,9 @@ int cmd_verify_pack(int argc, const char **argv, const char *prefix) OPT_END() }; + if (!the_hash_algo) + repo_set_hash_algo(the_repository, GIT_HASH_SHA1); + git_config(git_default_config, NULL); argc = parse_options(argc, argv, prefix, verify_pack_options, verify_pack_usage, 0); diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 4ad023c846d06a..d6f45d89234748 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -322,6 +322,10 @@ test_expect_success 'verify-pack catches a corrupted sum of the index file itsel fi ' +test_expect_success 'verify-pack outside a repository' ' + nongit git verify-pack -v "$(pwd)/test-1-${packname_1}.idx" +' + test_expect_success 'build pack index for an existing pack' ' cat test-1-${packname_1}.pack >test-3.pack && git index-pack -o tmp.idx test-3.pack &&