Merge branch 'jc/want-commit'
[gitweb.git] / t / t5505-remote.sh
index d189add2d0afeea9ae29ca6b82a786b55b445217..0d0222ea2ace733ffe3fbfbdee58520abcd40e92 100755 (executable)
@@ -304,6 +304,106 @@ test_expect_success 'add --mirror && prune' '
         git rev-parse --verify refs/heads/side)
 '
 
+test_expect_success 'add --mirror=fetch' '
+       mkdir mirror-fetch &&
+       git init mirror-fetch/parent &&
+       (cd mirror-fetch/parent &&
+        test_commit one) &&
+       git init --bare mirror-fetch/child &&
+       (cd mirror-fetch/child &&
+        git remote add --mirror=fetch -f parent ../parent)
+'
+
+test_expect_success 'fetch mirrors act as mirrors during fetch' '
+       (cd mirror-fetch/parent &&
+        git branch new &&
+        git branch -m master renamed
+       ) &&
+       (cd mirror-fetch/child &&
+        git fetch parent &&
+        git rev-parse --verify refs/heads/new &&
+        git rev-parse --verify refs/heads/renamed
+       )
+'
+
+test_expect_success 'fetch mirrors can prune' '
+       (cd mirror-fetch/child &&
+        git remote prune parent &&
+        test_must_fail git rev-parse --verify refs/heads/master
+       )
+'
+
+test_expect_success 'fetch mirrors do not act as mirrors during push' '
+       (cd mirror-fetch/parent &&
+        git checkout HEAD^0
+       ) &&
+       (cd mirror-fetch/child &&
+        git branch -m renamed renamed2 &&
+        git push parent
+       ) &&
+       (cd mirror-fetch/parent &&
+        git rev-parse --verify renamed &&
+        test_must_fail git rev-parse --verify refs/heads/renamed2
+       )
+'
+
+test_expect_success 'add fetch mirror with specific branches' '
+       git init --bare mirror-fetch/track &&
+       (cd mirror-fetch/track &&
+        git remote add --mirror=fetch -t heads/new parent ../parent
+       )
+'
+
+test_expect_success 'fetch mirror respects specific branches' '
+       (cd mirror-fetch/track &&
+        git fetch parent &&
+        git rev-parse --verify refs/heads/new &&
+        test_must_fail git rev-parse --verify refs/heads/renamed
+       )
+'
+
+test_expect_success 'add --mirror=push' '
+       mkdir mirror-push &&
+       git init --bare mirror-push/public &&
+       git init mirror-push/private &&
+       (cd mirror-push/private &&
+        test_commit one &&
+        git remote add --mirror=push public ../public
+       )
+'
+
+test_expect_success 'push mirrors act as mirrors during push' '
+       (cd mirror-push/private &&
+        git branch new &&
+        git branch -m master renamed &&
+        git push public
+       ) &&
+       (cd mirror-push/private &&
+        git rev-parse --verify refs/heads/new &&
+        git rev-parse --verify refs/heads/renamed &&
+        test_must_fail git rev-parse --verify refs/heads/master
+       )
+'
+
+test_expect_success 'push mirrors do not act as mirrors during fetch' '
+       (cd mirror-push/public &&
+        git branch -m renamed renamed2 &&
+        git symbolic-ref HEAD refs/heads/renamed2
+       ) &&
+       (cd mirror-push/private &&
+        git fetch public &&
+        git rev-parse --verify refs/heads/renamed &&
+        test_must_fail git rev-parse --verify refs/heads/renamed2
+       )
+'
+
+test_expect_success 'push mirrors do not allow you to specify refs' '
+       git init mirror-push/track &&
+       (cd mirror-push/track &&
+        test_must_fail git remote add --mirror=push -t new public ../public
+       )
+'
+
 test_expect_success 'add alt && prune' '
        (mkdir alttst &&
         cd alttst &&