Imported Upstream version 2.28.0
[platform/upstream/git.git] / t / t0410-partial-clone.sh
index a3988bd..6aa0f31 100755 (executable)
@@ -30,6 +30,40 @@ test_expect_success 'extensions.partialclone without filter' '
        git -C client fetch origin
 '
 
+test_expect_success 'convert shallow clone to partial clone' '
+       rm -fr server client &&
+       test_create_repo server &&
+       test_commit -C server my_commit 1 &&
+       test_commit -C server my_commit2 1 &&
+       git clone --depth=1 "file://$(pwd)/server" client &&
+       git -C client fetch --unshallow --filter="blob:none" &&
+       test_cmp_config -C client true remote.origin.promisor &&
+       test_cmp_config -C client blob:none remote.origin.partialclonefilter &&
+       test_cmp_config -C client 1 core.repositoryformatversion
+'
+
+test_expect_success 'convert to partial clone with noop extension' '
+       rm -fr server client &&
+       test_create_repo server &&
+       test_commit -C server my_commit 1 &&
+       test_commit -C server my_commit2 1 &&
+       git clone --depth=1 "file://$(pwd)/server" client &&
+       test_cmp_config -C client 0 core.repositoryformatversion &&
+       git -C client config extensions.noop true &&
+       git -C client fetch --unshallow --filter="blob:none"
+'
+
+test_expect_success 'converting to partial clone fails with unrecognized extension' '
+       rm -fr server client &&
+       test_create_repo server &&
+       test_commit -C server my_commit 1 &&
+       test_commit -C server my_commit2 1 &&
+       git clone --depth=1 "file://$(pwd)/server" client &&
+       test_cmp_config -C client 0 core.repositoryformatversion &&
+       git -C client config extensions.nonsense true &&
+       test_must_fail git -C client fetch --unshallow --filter="blob:none"
+'
+
 test_expect_success 'missing reflog object, but promised by a commit, passes fsck' '
        rm -rf repo &&
        test_create_repo repo &&