Merge branch 'sk/tag-contains-wo-recursion'
[gitweb.git] / t / t5537-fetch-shallow.sh
index d2110527ef33e5687601e73e36649e121fc21730..a980574682012fbb3f5f7c28a011df980f45c3de 100755 (executable)
@@ -79,6 +79,22 @@ EOF
        )
 '
 
+test_expect_success 'fetch --unshallow from shallow clone' '
+       (
+       cd shallow2 &&
+       git fetch --unshallow &&
+       git fsck &&
+       git log --format=%s origin/master >actual &&
+       cat <<EOF >expect &&
+6
+5
+4
+3
+EOF
+       test_cmp expect actual
+       )
+'
+
 test_expect_success 'fetch something upstream has but hidden by clients shallow boundaries' '
        # the blob "1" is available in .git but hidden by the
        # shallow2/.git/shallow and it should be resent
@@ -125,4 +141,49 @@ EOF
        )
 '
 
+test_expect_success 'fetch --update-shallow' '
+       (
+       cd shallow &&
+       git checkout master &&
+       commit 7 &&
+       git tag -m foo heavy-tag HEAD^ &&
+       git tag light-tag HEAD^:tracked
+       ) &&
+       (
+       cd notshallow &&
+       git fetch --update-shallow ../shallow/.git refs/heads/*:refs/remotes/shallow/* &&
+       git fsck &&
+       git for-each-ref --sort=refname --format="%(refname)" >actual.refs &&
+       cat <<EOF >expect.refs &&
+refs/remotes/shallow/master
+refs/remotes/shallow/no-shallow
+refs/tags/heavy-tag
+refs/tags/light-tag
+EOF
+       test_cmp expect.refs actual.refs &&
+       git log --format=%s shallow/master >actual &&
+       cat <<EOF >expect &&
+7
+6
+5
+4
+3
+EOF
+       test_cmp expect actual
+       )
+'
+
+test_expect_success POSIXPERM,SANITY 'shallow fetch from a read-only repo' '
+       cp -R .git read-only.git &&
+       find read-only.git -print | xargs chmod -w &&
+       test_when_finished "find read-only.git -type d -print | xargs chmod +w" &&
+       git clone --no-local --depth=2 read-only.git from-read-only &&
+       git --git-dir=from-read-only/.git log --format=%s >actual &&
+       cat >expect <<EOF &&
+add-1-back
+4
+EOF
+       test_cmp expect actual
+'
+
 test_done