* [PATCH 2/2] git-svn: fix svn fetch erroneously recreating empty dir placeholder deleted earlier
@ 2013-04-28 8:35 Ilya Basin
0 siblings, 0 replies; only message in thread
From: Ilya Basin @ 2013-04-28 8:35 UTC (permalink / raw)
To: Git mailing list
The Fetcher accumulates deleted paths in an array and doesn't reset the
array on next commit. This causes different results when interrupting
and resuming the fetch.
When --preserve-empty-dirs flag is used, a path in the array can be
erroneously treated as just deleted, although it was deleted in the
previous commit and cause the creation of an empty dir placeholder.
Test script:
(
set -e
rm -rf testrepo.svn testrepo.gitsvn
svnadmin create testrepo.svn
url=file://`pwd`/testrepo.svn
rm -rf testrepo
svn co "$url" testrepo
cd testrepo
mkdir -p foo/bar
echo aaa > foo/bar/fil.txt
svn add foo
svn commit -mx
svn rm -mx "$url/foo/bar/fil.txt"
svn rm -mx "$url/foo/bar"
echo aaa > fil.txt
svn add fil.txt
svn commit -mx
cd ..
rm -rf testrepo.gitsvn && git svn clone --preserve-empty-dirs "$url" testrepo.gitsvn
if [ -e testrepo.gitsvn/foo/bar/.gitignore ]; then
echo "error: testrepo.gitsvn/foo/bar/.gitignore exists"
false
fi
)
---
perl/Git/SVN/Fetcher.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
index 4f96076..e658889 100644
--- a/perl/Git/SVN/Fetcher.pm
+++ b/perl/Git/SVN/Fetcher.pm
@@ -19,6 +19,7 @@ sub new {
my ($class, $git_svn, $switch_path) = @_;
my $self = SVN::Delta::Editor->new;
bless $self, $class;
+ @deleted_gpath = ();
if (exists $git_svn->{last_commit}) {
$self->{c} = $git_svn->{last_commit};
$self->{empty_symlinks} =
--
1.8.1.5
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2013-04-28 8:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-28 8:35 [PATCH 2/2] git-svn: fix svn fetch erroneously recreating empty dir placeholder deleted earlier Ilya Basin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.