t0027: do not use an empty string as a pathspec element
[gitweb.git] / t / t9107-git-svn-migrate.sh
index 6efc2ab4d13696fe7debfa4ce8a702458ae48768..9f3ef8f2ef614814887f94b7f53e4a7e96f6bbcf 100755 (executable)
@@ -24,8 +24,9 @@ test_expect_success 'setup old-looking metadata' '
        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/')
 
@@ -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 &&
@@ -70,30 +73,38 @@ test_expect_success 'initialize a multi-repository repo' '
        '
 
 # 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\.")" &&