git-svn: remove check_path calls before calling do_update
authorEric Wong <normalperson@yhbt.net>
Fri, 9 Feb 2007 10:19:41 +0000 (02:19 -0800)
committerEric Wong <normalperson@yhbt.net>
Fri, 23 Feb 2007 08:57:11 +0000 (00:57 -0800)
These checks were needed before git-svn got smarter about
match_paths() and using path information returned by get_log().
We also have extra checking against fetching revisions
out-of-order these days; so we don't have to worry about that as
much.  We also check for tree deletions in match_paths() and
skip those as well.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl

index cd35efec7e175838c2de855d404247609c16d64e..819d25e28937488e4e7432c5b262474eaa821580 100755 (executable)
@@ -1138,6 +1138,9 @@ sub do_git_commit {
 
 sub match_paths {
        my ($self, $paths, $r) = @_;
+       if (my $path = $paths->{"/$self->{path}"}) {
+               return ($path->{action} eq 'D') ? 0 : 1;
+       }
        $self->{path_regex} ||= qr/^\/\Q$self->{path}\E\/?/;
        if (grep /$self->{path_regex}/, keys %$paths) {
                return 1;
@@ -2394,14 +2397,6 @@ sub gs_do_update {
        my $new = ($rev_a == $rev_b);
        my $path = $gs->{path};
 
-       my $ta = $self->check_path($path, $rev_a);
-       my $tb = $new ? $ta : $self->check_path($path, $rev_b);
-       return 1 if ($tb != $SVN::Node::dir && $ta != $SVN::Node::dir);
-       if ($ta == $SVN::Node::none) {
-               $rev_a = $rev_b;
-               $new = 1;
-       }
-
        my $pool = SVN::Pool->new;
        $editor->set_path_strip($path);
        my (@pc) = split m#/#, $path;