git-svn: allow --follow-parent on deleted directories

Any operations on the index in Git::SVN that is not wrapped by
tmp_index_do() is wrong.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
diff --git a/git-svn.perl b/git-svn.perl
index f01fb9a..88c0227 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1091,7 +1091,7 @@
 	}
 	if (defined $r0 && defined $parent && $gs->revisions_eq($r0, $r)) {
 		print STDERR "Found branch parent: ($self->{ref_id}) $parent\n";
-		command_noisy('read-tree', $parent);
+		$self->assert_index_clean($parent);
 		my $ed;
 		if ($self->ra->can_do_switch) {
 			print STDERR "Following parent with do_switch\n";
diff --git a/t/t9104-git-svn-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh
index 3afec97..402b614 100755
--- a/t/t9104-git-svn-follow-parent.sh
+++ b/t/t9104-git-svn-follow-parent.sh
@@ -49,6 +49,18 @@
                  sed -n -e '3p'\`\" = goodbye
         "
 
+test_expect_success 'follow deleted parent' "
+        svn cp -m 'resurrecting trunk as junk' \
+               -r2 $svnrepo/trunk $svnrepo/junk &&
+        git-repo-config --add svn-remote.git-svn.fetch \
+          junk:refs/remotes/svn/junk &&
+        git-svn fetch --follow-parent -i svn/thunk &&
+        git-svn fetch -i svn/junk --follow-parent &&
+        test -z \"\`git diff svn/junk svn/trunk\`\" &&
+        test \"\`git merge-base svn/junk svn/trunk\`\" \
+           = \"\`git rev-parse svn/trunk\`\"
+        "
+
 test_debug 'gitk --all &'
 
 test_done