git-svn: remove mergeinfo rev caching
authorEric Wong <normalperson@yhbt.net>
Tue, 21 Oct 2014 06:23:22 +0000 (06:23 +0000)
committerEric Wong <normalperson@yhbt.net>
Fri, 24 Oct 2014 22:55:43 +0000 (22:55 +0000)
This should further reduce memory usage from the new mergeinfo
speedups without hurting performance too much, assuming
reasonable latency to the SVN server.

Cc: Hin-Tak Leung <htl10@users.sourceforge.net>
Suggested-by: Jakob Stoklund Olesen <stoklund@2pi.dk>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
perl/Git/SVN.pm
index f8a75b190c860e3ae798565c28a5d9de81b7cdcf..4364506ca254fab75dcf949e6105b40a0585e4ef 100644 (file)
@@ -1710,32 +1710,20 @@ sub mergeinfo_changes {
        my %minfo = map {split ":", $_ } split "\n", $mergeinfo_prop;
        my $old_minfo = {};
 
-       # Initialize cache on the first call.
-       unless (defined $self->{cached_mergeinfo_rev}) {
-               $self->{cached_mergeinfo_rev} = {};
-       }
-
-       my $cached_rev = $self->{cached_mergeinfo_rev}{$old_path};
-       unless (defined $cached_rev && $cached_rev == $old_rev) {
-               my $ra = $self->ra;
-               # Give up if $old_path isn't in the repo.
-               # This is probably a merge on a subtree.
-               if ($ra->check_path($old_path, $old_rev) != $SVN::Node::dir) {
-                       warn "W: ignoring svn:mergeinfo on $old_path, ",
-                               "directory didn't exist in r$old_rev\n";
-                       return {};
-               }
-       }
-       my (undef, undef, $props) = $self->ra->get_dir($old_path, $old_rev);
+       my $ra = $self->ra;
+       # Give up if $old_path isn't in the repo.
+       # This is probably a merge on a subtree.
+       if ($ra->check_path($old_path, $old_rev) != $SVN::Node::dir) {
+               warn "W: ignoring svn:mergeinfo on $old_path, ",
+                       "directory didn't exist in r$old_rev\n";
+               return {};
+       }
+       my (undef, undef, $props) = $ra->get_dir($old_path, $old_rev);
        if (defined $props->{"svn:mergeinfo"}) {
                my %omi = map {split ":", $_ } split "\n",
                        $props->{"svn:mergeinfo"};
                $old_minfo = \%omi;
        }
-       $self->{cached_mergeinfo_rev}{$old_path} = $old_rev;
-
-       # Cache the new mergeinfo.
-       $self->{cached_mergeinfo_rev}{$path} = $rev;
 
        my %changes = ();
        foreach my $p (keys %minfo) {