Skip to content

Commit 96f4113

Browse files
committed
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
2 parents a86083e + 8b214c2 commit 96f4113

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

builtin/clone.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
914914
int err = 0, complete_refs_before_fetch = 1;
915915
int submodule_progress;
916916
int filter_submodules = 0;
917+
int hash_algo;
917918

918919
struct transport_ls_refs_options transport_ls_refs_options =
919920
TRANSPORT_LS_REFS_OPTIONS_INIT;
@@ -1302,15 +1303,15 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
13021303
}
13031304
}
13041305

1305-
if (mapped_refs) {
1306-
int hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
1307-
13081306
/*
13091307
* Now that we know what algorithm the remote side is using,
13101308
* let's set ours to the same thing.
13111309
*/
1312-
initialize_repository_version(hash_algo, 1);
1313-
repo_set_hash_algo(the_repository, hash_algo);
1310+
hash_algo = hash_algo_by_ptr(transport_get_hash_algo(transport));
1311+
initialize_repository_version(hash_algo, 1);
1312+
repo_set_hash_algo(the_repository, hash_algo);
1313+
1314+
if (mapped_refs) {
13141315
/*
13151316
* transport_get_remote_refs() may return refs with null sha-1
13161317
* in mapped_refs (see struct transport->get_refs_list

t/t5702-protocol-v2.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,17 @@ test_expect_success 'clone propagates unborn HEAD from non-empty repo' '
269269
grep "warning: remote HEAD refers to nonexistent ref" stderr
270270
'
271271

272+
test_expect_success 'clone propagates object-format from empty repo' '
273+
test_when_finished "rm -fr src256 dst256" &&
274+
275+
echo sha256 >expect &&
276+
git init --object-format=sha256 src256 &&
277+
git clone src256 dst256 &&
278+
git -C dst256 rev-parse --show-object-format >actual &&
279+
280+
test_cmp expect actual
281+
'
282+
272283
test_expect_success 'bare clone propagates unborn HEAD from non-empty repo' '
273284
test_when_finished "rm -rf file_unborn_parent file_unborn_child.git" &&
274285

0 commit comments

Comments
 (0)