Merge branch 'master' into next
This commit is contained in:
commit
753fa210cc
@ -29,8 +29,7 @@ git-svn.html : git-svn.txt
|
|||||||
asciidoc -b xhtml11 -d manpage \
|
asciidoc -b xhtml11 -d manpage \
|
||||||
-f ../../Documentation/asciidoc.conf $<
|
-f ../../Documentation/asciidoc.conf $<
|
||||||
test: git-svn
|
test: git-svn
|
||||||
cd t && $(SHELL) ./t0000-contrib-git-svn.sh $(TEST_FLAGS)
|
cd t && for i in t????-*.sh; do $(SHELL) ./$$i $(TEST_FLAGS); done
|
||||||
cd t && $(SHELL) ./t0001-contrib-git-svn-props.sh $(TEST_FLAGS)
|
|
||||||
|
|
||||||
# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
|
# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
|
||||||
full-test:
|
full-test:
|
||||||
|
@ -2841,13 +2841,20 @@ sub rmdirs {
|
|||||||
exec qw/git-ls-tree --name-only -r -z/, $self->{c} or croak $!;
|
exec qw/git-ls-tree --name-only -r -z/, $self->{c} or croak $!;
|
||||||
}
|
}
|
||||||
local $/ = "\0";
|
local $/ = "\0";
|
||||||
|
my @svn_path = split m#/#, $self->{svn_path};
|
||||||
while (<$fh>) {
|
while (<$fh>) {
|
||||||
chomp;
|
chomp;
|
||||||
$_ = $self->{svn_path} . '/' . $_;
|
my @dn = (@svn_path, (split m#/#, $_));
|
||||||
my ($dn) = ($_ =~ m#^(.*?)/?(?:[^/]+)$#);
|
while (pop @dn) {
|
||||||
delete $rm->{$dn};
|
delete $rm->{join '/', @dn};
|
||||||
last unless %$rm;
|
|
||||||
}
|
}
|
||||||
|
unless (%$rm) {
|
||||||
|
close $fh;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close $fh;
|
||||||
|
|
||||||
my ($r, $p, $bat) = ($self->{r}, $self->{pool}, $self->{bat});
|
my ($r, $p, $bat) = ($self->{r}, $self->{pool}, $self->{bat});
|
||||||
foreach my $d (sort { $b =~ tr#/#/# <=> $a =~ tr#/#/# } keys %$rm) {
|
foreach my $d (sort { $b =~ tr#/#/# <=> $a =~ tr#/#/# } keys %$rm) {
|
||||||
$self->close_directory($bat->{$d}, $p);
|
$self->close_directory($bat->{$d}, $p);
|
||||||
|
29
contrib/git-svn/t/t0002-deep-rmdir.sh
Normal file
29
contrib/git-svn/t/t0002-deep-rmdir.sh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
test_description='git-svn rmdir'
|
||||||
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
|
test_expect_success 'initialize repo' "
|
||||||
|
mkdir import &&
|
||||||
|
cd import &&
|
||||||
|
mkdir -p deeply/nested/directory/number/1 &&
|
||||||
|
mkdir -p deeply/nested/directory/number/2 &&
|
||||||
|
echo foo > deeply/nested/directory/number/1/file &&
|
||||||
|
echo foo > deeply/nested/directory/number/2/another &&
|
||||||
|
svn import -m 'import for git-svn' . $svnrepo &&
|
||||||
|
cd ..
|
||||||
|
"
|
||||||
|
|
||||||
|
test_expect_success 'mirror via git-svn' "
|
||||||
|
git-svn init $svnrepo &&
|
||||||
|
git-svn fetch &&
|
||||||
|
git checkout -f -b test-rmdir remotes/git-svn
|
||||||
|
"
|
||||||
|
|
||||||
|
test_expect_success 'Try a commit on rmdir' "
|
||||||
|
git rm -f deeply/nested/directory/number/2/another &&
|
||||||
|
git commit -a -m 'remove another' &&
|
||||||
|
git-svn commit --rmdir HEAD &&
|
||||||
|
svn ls -R $svnrepo | grep ^deeply/nested/directory/number/1
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user