upload-pack: support hidden refs with protocol v2
[gitweb.git] / t / t9107-git-svn-migrate.sh
index 906019803797b01a4b447858d7766486bba951aa..ceaa5bad105e52eca3d193255766548e41d84f31 100755 (executable)
@@ -19,15 +19,16 @@ test_expect_success 'setup old-looking metadata' '
        git svn init "$svnrepo" &&
        git svn fetch &&
        rm -rf "$GIT_DIR"/svn &&
-       git update-ref refs/heads/git-svn-HEAD refs/${remotes_git_svn} &&
-       git update-ref refs/heads/svn-HEAD refs/${remotes_git_svn} &&
-       git update-ref -d refs/${remotes_git_svn} refs/${remotes_git_svn}
+       git update-ref refs/heads/git-svn-HEAD refs/remotes/git-svn &&
+       git update-ref refs/heads/svn-HEAD refs/remotes/git-svn &&
+       git update-ref -d refs/remotes/git-svn refs/remotes/git-svn
        '
 
-head=$(git rev-parse --verify refs/heads/git-svn-HEAD^0)
-test_expect_success 'git-svn-HEAD is a real HEAD' "test -n '$head'"
+test_expect_success 'git-svn-HEAD is a real HEAD' '
+       git rev-parse --verify refs/heads/git-svn-HEAD^0
+'
 
-svnrepo_escaped=$(echo $svnrepo | sed 's/ /%20/')
+svnrepo_escaped=$(echo $svnrepo | sed 's/ /%20/g')
 
 test_expect_success 'initialize old-style (v0) git svn layout' '
        mkdir -p "$GIT_DIR"/git-svn/info "$GIT_DIR"/svn/info &&
@@ -35,11 +36,11 @@ test_expect_success 'initialize old-style (v0) git svn layout' '
        echo "$svnrepo" > "$GIT_DIR"/svn/info/url &&
        git svn migrate &&
        ! test -d "$GIT_DIR"/git-svn &&
-       git rev-parse --verify refs/${remotes_git_svn}^0 &&
+       git rev-parse --verify refs/remotes/git-svn^0 &&
        git rev-parse --verify refs/remotes/svn^0 &&
        test "$(git config --get svn-remote.svn.url)" = "$svnrepo_escaped" &&
        test $(git config --get svn-remote.svn.fetch) = \
-             ":refs/${remotes_git_svn}"
+               ":refs/remotes/git-svn"
        '
 
 test_expect_success 'initialize a multi-repository repo' '
@@ -56,9 +57,11 @@ test_expect_success 'initialize a multi-repository repo' '
                                "^tags/\*:refs/remotes/origin/tags/\*$" &&
        git config --add svn-remote.svn.fetch "branches/a:refs/remotes/origin/a" &&
        git config --add svn-remote.svn.fetch "branches/b:refs/remotes/origin/b" &&
-       for i in tags/0.1 tags/0.2 tags/0.3; do
+       for i in tags/0.1 tags/0.2 tags/0.3
+       do
                git config --add svn-remote.svn.fetch \
-                                $i:refs/remotes/origin/$i || exit 1; done &&
+                       $i:refs/remotes/origin/$i || return 1
+       done &&
        git config --get-all svn-remote.svn.fetch > fetch.out &&
        grep "^trunk:refs/remotes/origin/trunk$" fetch.out &&
        grep "^branches/a:refs/remotes/origin/a$" fetch.out &&
@@ -66,34 +69,42 @@ test_expect_success 'initialize a multi-repository repo' '
        grep "^tags/0\.1:refs/remotes/origin/tags/0\.1$" fetch.out &&
        grep "^tags/0\.2:refs/remotes/origin/tags/0\.2$" fetch.out &&
        grep "^tags/0\.3:refs/remotes/origin/tags/0\.3$" fetch.out &&
-       grep "^:refs/${remotes_git_svn}" fetch.out
+       grep "^:refs/remotes/git-svn" fetch.out
        '
 
 # refs should all be different, but the trees should all be the same:
-test_expect_success 'multi-fetch works on partial urls + paths' "
+test_expect_success 'multi-fetch works on partial urls + paths' '
+       refs="trunk a b tags/0.1 tags/0.2 tags/0.3" &&
        git svn multi-fetch &&
-       for i in trunk a b tags/0.1 tags/0.2 tags/0.3; do
-               git rev-parse --verify refs/remotes/origin/\$i^0 >> refs.out || exit 1;
-           done &&
-       test -z \"\$(sort < refs.out | uniq -d)\" &&
-       for i in trunk a b tags/0.1 tags/0.2 tags/0.3; do
-         for j in trunk a b tags/0.1 tags/0.2 tags/0.3; do
-               if test \$j != \$i; then continue; fi
-           test -z \"\$(git diff refs/remotes/origin/\$i \
-                                refs/remotes/origin/\$j)\" ||exit 1; done; done
-       "
+       for i in $refs
+       do
+               git rev-parse --verify refs/remotes/origin/$i^0 || return 1;
+       done >refs.out &&
+       test -z "$(sort <refs.out | uniq -d)" &&
+       for i in $refs
+       do
+               for j in $refs
+               do
+                       git diff --exit-code refs/remotes/origin/$i \
+                                            refs/remotes/origin/$j ||
+                               return 1
+               done
+       done
+'
 
 test_expect_success 'migrate --minimize on old inited layout' '
        git config --unset-all svn-remote.svn.fetch &&
        git config --unset-all svn-remote.svn.url &&
        rm -rf "$GIT_DIR"/svn &&
-       for i in $(cat fetch.out); do
+       for i in $(cat fetch.out)
+       do
                path=$(expr $i : "\([^:]*\):.*$")
                ref=$(expr $i : "[^:]*:\(refs/remotes/.*\)$")
                if test -z "$ref"; then continue; fi
                if test -n "$path"; then path="/$path"; fi
-               ( mkdir -p "$GIT_DIR"/svn/$ref/info/ &&
-               echo "$svnrepo"$path > "$GIT_DIR"/svn/$ref/info/url ) || exit 1;
+               mkdir -p "$GIT_DIR"/svn/$ref/info/ &&
+               echo "$svnrepo"$path >"$GIT_DIR"/svn/$ref/info/url ||
+               return 1
        done &&
        git svn migrate --minimize &&
        test -z "$(git config -l | grep "^svn-remote\.git-svn\.")" &&
@@ -104,7 +115,7 @@ test_expect_success 'migrate --minimize on old inited layout' '
        grep "^tags/0\.1:refs/remotes/origin/tags/0\.1$" fetch.out &&
        grep "^tags/0\.2:refs/remotes/origin/tags/0\.2$" fetch.out &&
        grep "^tags/0\.3:refs/remotes/origin/tags/0\.3$" fetch.out &&
-       grep "^:refs/${remotes_git_svn}" fetch.out
+       grep "^:refs/remotes/git-svn" fetch.out
        '
 
 test_expect_success  ".rev_db auto-converted to .rev_map.UUID" '