git/t/t9146-git-svn-empty-dirs.sh
Michael Haggerty 55f9d7a75c git-svn: add an option to skip the creation of empty directories
"git svn mkdirs" (which creates empty directories in the current
working copy) can be very slow and is often unnecessary.  Provide a
config file option "svn-remote.<name>.automkdirs" that prevents empty
directories from being created automatically.  (They are still created
if "git svn mkdirs" is invoked explicitly.)

Based-on-patch-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-04-01 12:53:18 -07:00

160 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
#
# Copyright (c) 2009 Eric Wong
test_description='git svn creates empty directories'
. ./lib-git-svn.sh
test_expect_success 'initialize repo' '
for i in a b c d d/e d/e/f "weird file name"
do
svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"
done
'
test_expect_success 'clone' 'git svn clone "$svnrepo" cloned'
test_expect_success 'empty directories exist' '
(
cd cloned &&
for i in a b c d d/e d/e/f "weird file name"
do
if ! test -d "$i"
then
echo >&2 "$i does not exist"
exit 1
fi
done
)
'
test_expect_success 'option automkdirs set to false' '
(
git svn init "$svnrepo" cloned-no-mkdirs &&
cd cloned-no-mkdirs &&
git config svn-remote.svn.automkdirs false &&
git svn fetch &&
for i in a b c d d/e d/e/f "weird file name"
do
if test -d "$i"
then
echo >&2 "$i exists"
exit 1
fi
done
)
'
test_expect_success 'more emptiness' '
svn_cmd mkdir -m "bang bang" "$svnrepo"/"! !"
'
test_expect_success 'git svn rebase creates empty directory' '
( cd cloned && git svn rebase ) &&
test -d cloned/"! !"
'
test_expect_success 'git svn mkdirs recreates empty directories' '
(
cd cloned &&
rm -r * &&
git svn mkdirs &&
for i in a b c d d/e d/e/f "weird file name" "! !"
do
if ! test -d "$i"
then
echo >&2 "$i does not exist"
exit 1
fi
done
)
'
test_expect_success 'git svn mkdirs -r works' '
(
cd cloned &&
rm -r * &&
git svn mkdirs -r7 &&
for i in a b c d d/e d/e/f "weird file name"
do
if ! test -d "$i"
then
echo >&2 "$i does not exist"
exit 1
fi
done
if test -d "! !"
then
echo >&2 "$i should not exist"
exit 1
fi
git svn mkdirs -r8 &&
if ! test -d "! !"
then
echo >&2 "$i not exist"
exit 1
fi
)
'
test_expect_success 'initialize trunk' '
for i in trunk trunk/a trunk/"weird file name"
do
svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"
done
'
test_expect_success 'clone trunk' 'git svn clone -s "$svnrepo" trunk'
test_expect_success 'empty directories in trunk exist' '
(
cd trunk &&
for i in a "weird file name"
do
if ! test -d "$i"
then
echo >&2 "$i does not exist"
exit 1
fi
done
)
'
test_expect_success 'remove a top-level directory from svn' '
svn_cmd rm -m "remove d" "$svnrepo"/d
'
test_expect_success 'removed top-level directory does not exist' '
git svn clone "$svnrepo" removed &&
test ! -e removed/d
'
unhandled=.git/svn/refs/remotes/git-svn/unhandled.log
test_expect_success 'git svn gc-ed files work' '
(
cd removed &&
git svn gc &&
: Compress::Zlib may not be available &&
if test -f "$unhandled".gz
then
svn_cmd mkdir -m gz "$svnrepo"/gz &&
git reset --hard $(git rev-list HEAD | tail -1) &&
git svn rebase &&
test -f "$unhandled".gz &&
test -f "$unhandled" &&
for i in a b c "weird file name" gz "! !"
do
if ! test -d "$i"
then
echo >&2 "$i does not exist"
exit 1
fi
done
fi
)
'
test_done