diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-04-11 23:49:13 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-04-11 23:49:13 +0300 |
commit | 96f4113ac01e3d8e4a26cbc4df18d0af958c1710 (patch) | |
tree | f814e43f5b3246f7715f162ff05188e79cbeb5dc | |
parent | a86083e25fa3cb1d769f029d06b2b53a52f2531b (diff) | |
parent | 8b214c2e9dda8fc5b8d49b978fd2c155b7596cd0 (diff) |
Merge branch 'jc/clone-object-format-from-void'
"git clone" from an empty repository learned to propagate the
choice of the hash algorithm from the source repository to the
newly created repository.
* jc/clone-object-format-from-void:
clone: propagate object-format when cloning from void
-rw-r--r-- | builtin/clone.c | 11 | ||||
-rwxr-xr-x | t/t5702-protocol-v2.sh | 11 |
2 files changed, 17 insertions, 5 deletions
diff --git a/builtin/clone.c b/builtin/clone.c index c171def1f3..6dc89f1058 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -914,6 +914,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) int err = 0, complete_refs_before_fetch = 1; int submodule_progress; int filter_submodules = 0; + int hash_algo; struct transport_ls_refs_options transport_ls_refs_options = TRANSPORT_LS_REFS_OPTIONS_INIT; @@ -1302,15 +1303,15 @@ int cmd_clone(int argc, const char **argv, const char *prefix) } } - if (mapped_refs) { - int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport)); - /* * Now that we know what algorithm the remote side is using, * let's set ours to the same thing. */ - initialize_repository_version(hash_algo, 1); - repo_set_hash_algo(the_repository, hash_algo); + hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport)); + initialize_repository_version(hash_algo, 1); + repo_set_hash_algo(the_repository, hash_algo); + + if (mapped_refs) { /* * transport_get_remote_refs() may return refs with null sha-1 * in mapped_refs (see struct transport->get_refs_list diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh index 71aabe30b7..6af5c2062f 100755 --- a/t/t5702-protocol-v2.sh +++ b/t/t5702-protocol-v2.sh @@ -269,6 +269,17 @@ test_expect_success 'clone propagates unborn HEAD from non-empty repo' ' grep "warning: remote HEAD refers to nonexistent ref" stderr ' +test_expect_success 'clone propagates object-format from empty repo' ' + test_when_finished "rm -fr src256 dst256" && + + echo sha256 >expect && + git init --object-format=sha256 src256 && + git clone src256 dst256 && + git -C dst256 rev-parse --show-object-format >actual && + + test_cmp expect actual +' + test_expect_success 'bare clone propagates unborn HEAD from non-empty repo' ' test_when_finished "rm -rf file_unborn_parent file_unborn_child.git" && |