git svn: attempt to create empty dirs on clone+rebase
We parse unhandled.log files for empty_dir statements and make a best effort attempt to recreate empty directories on fresh clones and rebase. This should cover the majority of cases where users work off a single branch or for projects where branches do not differ in empty directories. Since this cannot affect "normal" git commands like "checkout" or "reset", so users switching between branches in a single working directory should use the new "git svn mkdirs" command after switching branches. Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
85
t/t9146-git-svn-empty-dirs.sh
Executable file
85
t/t9146-git-svn-empty-dirs.sh
Executable file
@ -0,0 +1,85 @@
|
||||
#!/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 '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_done
|
||||
Reference in New Issue
Block a user