1#!/bin/sh 2# 3# Copyright (c) 2009 Eric Wong 4 5test_description='git svn creates empty directories' 6. ./lib-git-svn.sh 7 8test_expect_success 'initialize repo'' 9 for i in a b c d d/e d/e/f "weird file name" 10 do 11 svn_cmd mkdir -m "mkdir$i" "$svnrepo"/"$i" 12 done 13' 14 15test_expect_success 'clone''git svn clone "$svnrepo" cloned' 16 17test_expect_success 'empty directories exist'' 18 ( 19 cd cloned && 20 for i in a b c d d/e d/e/f "weird file name" 21 do 22 if ! test -d "$i" 23 then 24 echo >&2 "$idoes not exist" && 25 exit 1 26 fi 27 done 28 ) 29' 30 31test_expect_success 'option automkdirs set to false'' 32 ( 33 git svn init "$svnrepo" cloned-no-mkdirs && 34 cd cloned-no-mkdirs && 35 git config svn-remote.svn.automkdirs false && 36 git svn fetch && 37 for i in a b c d d/e d/e/f "weird file name" 38 do 39 if test -d "$i" 40 then 41 echo >&2 "$iexists" && 42 exit 1 43 fi 44 done 45 ) 46' 47 48test_expect_success 'more emptiness'' 49 svn_cmd mkdir -m "bang bang" "$svnrepo"/"! !" 50' 51 52test_expect_success 'git svn rebase creates empty directory'' 53 ( cd cloned && git svn rebase ) && 54 test -d cloned/"! !" 55' 56 57test_expect_success 'git svn mkdirs recreates empty directories'' 58 ( 59 cd cloned && 60 rm -r * && 61 git svn mkdirs && 62 for i in a b c d d/e d/e/f "weird file name" "! !" 63 do 64 if ! test -d "$i" 65 then 66 echo >&2 "$idoes not exist" && 67 exit 1 68 fi 69 done 70 ) 71' 72 73test_expect_success 'git svn mkdirs -r works'' 74 ( 75 cd cloned && 76 rm -r * && 77 git svn mkdirs -r7 && 78 for i in a b c d d/e d/e/f "weird file name" 79 do 80 if ! test -d "$i" 81 then 82 echo >&2 "$idoes not exist" && 83 exit 1 84 fi 85 done && 86 87 if test -d "! !" 88 then 89 echo >&2 "$ishould not exist" && 90 exit 1 91 fi && 92 93 git svn mkdirs -r8 && 94 if ! test -d "! !" 95 then 96 echo >&2 "$inot exist" && 97 exit 1 98 fi 99 ) 100' 101 102test_expect_success 'initialize trunk'' 103 for i in trunk trunk/a trunk/"weird file name" 104 do 105 svn_cmd mkdir -m "mkdir$i" "$svnrepo"/"$i" 106 done 107' 108 109test_expect_success 'clone trunk''git svn clone -s "$svnrepo" trunk' 110 111test_expect_success 'empty directories in trunk exist'' 112 ( 113 cd trunk && 114 for i in a "weird file name" 115 do 116 if ! test -d "$i" 117 then 118 echo >&2 "$idoes not exist" && 119 exit 1 120 fi 121 done 122 ) 123' 124 125test_expect_success 'remove a top-level directory from svn'' 126 svn_cmd rm -m "remove d" "$svnrepo"/d 127' 128 129test_expect_success 'removed top-level directory does not exist'' 130 git svn clone "$svnrepo" removed && 131 test ! -e removed/d 132 133' 134unhandled=.git/svn/refs/remotes/git-svn/unhandled.log 135test_expect_success 'git svn gc-ed files work'' 136 ( 137 cd removed && 138 git svn gc && 139 : Compress::Zlib may not be available && 140 if test -f "$unhandled".gz 141 then 142 svn_cmd mkdir -m gz "$svnrepo"/gz && 143 git reset --hard$(git rev-list HEAD | tail -1)&& 144 git svn rebase && 145 test -f "$unhandled".gz && 146 test -f "$unhandled" && 147 for i in a b c "weird file name" gz "! !" 148 do 149 if ! test -d "$i" 150 then 151 echo >&2 "$idoes not exist" && 152 exit 1 153 fi 154 done 155 fi 156 ) 157' 158 159test_done