upload-pack: support hidden refs with protocol v2
[gitweb.git] / t / t5512-ls-remote.sh
index 02106c9226605f3b241160a8b46e6dbf3a9d3fc0..6547a394e79c0118dde96ed4f05b7954bb09f8bf 100755 (executable)
@@ -10,9 +10,12 @@ test_expect_success setup '
        test_tick &&
        git commit -m initial &&
        git tag mark &&
+       git tag mark1.1 &&
+       git tag mark1.2 &&
+       git tag mark1.10 &&
        git show-ref --tags -d | sed -e "s/ /   /" >expected.tag &&
        (
-               echo "$(git rev-parse HEAD)     HEAD"
+               echo "$(git rev-parse HEAD)     HEAD" &&
                git show-ref -d | sed -e "s/ /  /"
        ) >expected.all &&
 
@@ -39,6 +42,39 @@ test_expect_success 'ls-remote self' '
        test_cmp expected.all actual
 '
 
+test_expect_success 'ls-remote --sort="version:refname" --tags self' '
+       cat >expect <<-EOF &&
+       $(git rev-parse mark)   refs/tags/mark
+       $(git rev-parse mark1.1)        refs/tags/mark1.1
+       $(git rev-parse mark1.2)        refs/tags/mark1.2
+       $(git rev-parse mark1.10)       refs/tags/mark1.10
+       EOF
+       git ls-remote --sort="version:refname" --tags self >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'ls-remote --sort="-version:refname" --tags self' '
+       cat >expect <<-EOF &&
+       $(git rev-parse mark1.10)       refs/tags/mark1.10
+       $(git rev-parse mark1.2)        refs/tags/mark1.2
+       $(git rev-parse mark1.1)        refs/tags/mark1.1
+       $(git rev-parse mark)   refs/tags/mark
+       EOF
+       git ls-remote --sort="-version:refname" --tags self >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'ls-remote --sort="-refname" --tags self' '
+       cat >expect <<-EOF &&
+       $(git rev-parse mark1.2)        refs/tags/mark1.2
+       $(git rev-parse mark1.10)       refs/tags/mark1.10
+       $(git rev-parse mark1.1)        refs/tags/mark1.1
+       $(git rev-parse mark)   refs/tags/mark
+       EOF
+       git ls-remote --sort="-refname" --tags self >actual &&
+       test_cmp expect actual
+'
+
 test_expect_success 'dies when no remote specified and no default remotes found' '
        test_must_fail git ls-remote
 '
@@ -69,7 +105,7 @@ test_expect_success 'use branch.<name>.remote if possible' '
        git clone . other.git &&
        (
                cd other.git &&
-               echo "$(git rev-parse HEAD)     HEAD"
+               echo "$(git rev-parse HEAD)     HEAD" &&
                git show-ref    | sed -e "s/ /  /"
        ) >exp &&
 
@@ -119,19 +155,17 @@ test_expect_success 'die with non-2 for wrong repository even with --exit-code'
 
 test_expect_success 'Report success even when nothing matches' '
        git ls-remote other.git "refs/nsn/*" >actual &&
-       >expect &&
-       test_cmp expect actual
+       test_must_be_empty actual
 '
 
 test_expect_success 'Report no-match with --exit-code' '
        test_expect_code 2 git ls-remote --exit-code other.git "refs/nsn/*" >actual &&
-       >expect &&
-       test_cmp expect actual
+       test_must_be_empty actual
 '
 
 test_expect_success 'Report match with --exit-code' '
        git ls-remote --exit-code other.git "refs/tags/*" >actual &&
-       git ls-remote . tags/mark >expect &&
+       git ls-remote . tags/mark* >expect &&
        test_cmp expect actual
 '
 
@@ -170,14 +204,24 @@ test_expect_success 'overrides work between mixed transfer/upload-pack hideRefs'
        grep refs/tags/magic actual
 '
 
+test_expect_success 'protocol v2 supports hiderefs' '
+       test_config uploadpack.hiderefs refs/tags &&
+       git -c protocol.version=2 ls-remote . >actual &&
+       ! grep refs/tags actual
+'
+
 test_expect_success 'ls-remote --symref' '
-       cat >expect <<-\EOF &&
+       git fetch origin &&
+       cat >expect <<-EOF &&
        ref: refs/heads/master  HEAD
-       1bd44cb9d13204b0fe1958db0082f5028a16eb3a        HEAD
-       1bd44cb9d13204b0fe1958db0082f5028a16eb3a        refs/heads/master
-       1bd44cb9d13204b0fe1958db0082f5028a16eb3a        refs/remotes/origin/HEAD
-       1bd44cb9d13204b0fe1958db0082f5028a16eb3a        refs/remotes/origin/master
-       1bd44cb9d13204b0fe1958db0082f5028a16eb3a        refs/tags/mark
+       $(git rev-parse HEAD)   HEAD
+       $(git rev-parse refs/heads/master)      refs/heads/master
+       $(git rev-parse HEAD)   refs/remotes/origin/HEAD
+       $(git rev-parse refs/remotes/origin/master)     refs/remotes/origin/master
+       $(git rev-parse refs/tags/mark) refs/tags/mark
+       $(git rev-parse refs/tags/mark1.1)      refs/tags/mark1.1
+       $(git rev-parse refs/tags/mark1.10)     refs/tags/mark1.10
+       $(git rev-parse refs/tags/mark1.2)      refs/tags/mark1.2
        EOF
        git ls-remote --symref >actual &&
        test_cmp expect actual