From: Ilya Basin <basinilya@gmail.com>
To: Git mailing list <git@vger.kernel.org>
Subject: [PATCH 1/2] git-svn: fix occasional "Failed to strip path" error on fetch next commit
Date: Sun, 28 Apr 2013 12:35:27 +0359 [thread overview]
Message-ID: <1107347907.20130428123527@gmail.com> (raw)
When --stdlayout and --preserve-empty-dirs flags are used and a
directory becomes empty, sometimes no empty dir placeholder file
created. Then on fetch next commit git-svn dies with "Failed to strip
path" error.
Test script:
rm -rf testrepo.svn testrepo.gitsvn
svnadmin create testrepo.svn
url=file://`pwd`/testrepo.svn
svn mkdir -m "" "$url/trunk" "$url/branches" "$url/tags"
rm -rf testrepo
svn co "$url" testrepo
cd testrepo/trunk
mkdir -p foo/bar/
svn add foo/
svn commit -mx
svn rm foo/bar/
svn commit -mx
svn up
mkdir -p baz/
svn add baz/
svn commit -mx
echo x > fil.txt
svn add fil.txt
svn commit -mx
cd ../..
git svn clone --stdlayout --preserve-empty-dirs "$url" testrepo.gitsvn
---
perl/Git/SVN/Fetcher.pm | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
index 046a7a2..4f96076 100644
--- a/perl/Git/SVN/Fetcher.pm
+++ b/perl/Git/SVN/Fetcher.pm
@@ -129,6 +129,7 @@ sub is_path_ignored {
sub set_path_strip {
my ($self, $path) = @_;
+ $self->{pathprefix_strip} = length $path ? ($path . "/") : "";
$self->{path_strip} = qr/^\Q$path\E(\/|$)/ if length $path;
}
@@ -458,9 +459,12 @@ sub find_empty_directories {
my $skip_added = 0;
foreach my $t (qw/dir_prop file_prop/) {
foreach my $path (keys %{ $self->{$t} }) {
- if (exists $self->{$t}->{dirname($path)}) {
- $skip_added = 1;
- last;
+ if (length $self->git_path($path)) {
+ $path = dirname($path);
+ if ($dir eq $self->git_path($path) && exists $self->{$t}->{$path}) {
+ $skip_added = 1;
+ last;
+ }
}
}
last if $skip_added;
@@ -477,7 +481,7 @@ sub find_empty_directories {
delete $files{$_} foreach (@deleted_gpath);
# Report the directory if there are no filenames left.
- push @empty_dirs, $dir unless (scalar %files);
+ push @empty_dirs, ($self->{pathprefix_strip} . $dir) unless (scalar %files);
}
@empty_dirs;
}
--
1.8.1.5
next reply other threads:[~2013-04-28 8:37 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-28 8:36 Ilya Basin [this message]
2013-04-28 8:58 ` [PATCH 1/2] git-svn: fix occasional "Failed to strip path" error on fetch next commit Thomas Rast
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1107347907.20130428123527@gmail.com \
--to=basinilya@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.