Merge branch 'jc/checkout-detach-doc'
[gitweb.git] / t / t5500-fetch-pack.sh
index d574085696e81522669119c9b7480ba4c682c968..d87ddf73b7127bc624ca739653db9389831b817e 100755 (executable)
@@ -135,6 +135,13 @@ test_expect_success 'clone shallow depth 1' '
        test "`git --git-dir=shallow0/.git rev-list --count HEAD`" = 1
 '
 
+test_expect_success 'clone shallow depth 1 with fsck' '
+       git config --global fetch.fsckobjects true &&
+       git clone --no-single-branch --depth 1 "file://$(pwd)/." shallow0fsck &&
+       test "`git --git-dir=shallow0fsck/.git rev-list --count HEAD`" = 1 &&
+       git config --global --unset fetch.fsckobjects
+'
+
 test_expect_success 'clone shallow' '
        git clone --no-single-branch --depth 2 "file://$(pwd)/." shallow
 '
@@ -373,6 +380,31 @@ test_expect_success 'clone shallow with packed refs' '
        test_cmp count8.expected count8.actual
 '
 
+test_expect_success 'fetch in shallow repo unreachable shallow objects' '
+       (
+               git clone --bare --branch B --single-branch "file://$(pwd)/." no-reflog &&
+               git clone --depth 1 "file://$(pwd)/no-reflog" shallow9 &&
+               cd no-reflog &&
+               git tag -d TAGB1 TAGB2 &&
+               git update-ref refs/heads/B B~~ &&
+               git gc --prune=now &&
+               cd ../shallow9 &&
+               git fetch origin &&
+               git fsck --no-dangling
+       )
+'
+test_expect_success 'fetch creating new shallow root' '
+       (
+               git clone "file://$(pwd)/." shallow10 &&
+               git commit --allow-empty -m empty &&
+               cd shallow10 &&
+               git fetch --depth=1 --progress 2>actual &&
+               # This should fetch only the empty commit, no tree or
+               # blob objects
+               grep "remote: Total 1" actual
+       )
+'
+
 test_expect_success 'setup tests for the --stdin parameter' '
        for head in C D E F
        do
@@ -484,4 +516,20 @@ test_expect_success 'test --all, --depth, and explicit tag' '
        ) >out-adt 2>error-adt
 '
 
+test_expect_success 'shallow fetch with tags does not break the repository' '
+       mkdir repo1 &&
+       (
+               cd repo1 &&
+               git init &&
+               test_commit 1 &&
+               test_commit 2 &&
+               test_commit 3 &&
+               mkdir repo2 &&
+               cd repo2 &&
+               git init &&
+               git fetch --depth=2 ../.git master:branch &&
+               git fsck
+       )
+'
+
 test_done