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
This commit is contained in:
commit
96f4113ac0
@ -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
|
||||
|
@ -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" &&
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user