git-svn: remove mergeinfo rev caching

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>

Eric Wong committed Oct 21, 2014 at 06:23 UTC 2b6c613f1a873555475050bd8f5a22828f0d03a3
1 file changed +9 -21
perl/Git/SVN.pm
+9 -21
@@ -1710,32 +1710,20 @@ sub mergeinfo_changes {
1710 my %minfo = map {split ":", $_ } split "\n", $mergeinfo_prop;
1711 my $old_minfo = {};
1712
1713 - # Initialize cache on the first call.
1714 - unless (defined $self->{cached_mergeinfo_rev}) {
1715 - $self->{cached_mergeinfo_rev} = {};
1716 - }
1717 -
1718 - my $cached_rev = $self->{cached_mergeinfo_rev}{$old_path};
1719 - unless (defined $cached_rev && $cached_rev == $old_rev) {
1720 - my $ra = $self->ra;
1721 - # Give up if $old_path isn't in the repo.
1722 - # This is probably a merge on a subtree.
1723 - if ($ra->check_path($old_path, $old_rev) != $SVN::Node::dir) {
1724 - warn "W: ignoring svn:mergeinfo on $old_path, ",
1725 - "directory didn't exist in r$old_rev\n";
1726 - return {};
1727 - }
1728 - }
1729 - my (undef, undef, $props) = $self->ra->get_dir($old_path, $old_rev);
1713 + my $ra = $self->ra;
1714 + # Give up if $old_path isn't in the repo.
1715 + # This is probably a merge on a subtree.
1716 + if ($ra->check_path($old_path, $old_rev) != $SVN::Node::dir) {
1717 + warn "W: ignoring svn:mergeinfo on $old_path, ",
1718 + "directory didn't exist in r$old_rev\n";
1719 + return {};
1720 + }
1721 + my (undef, undef, $props) = $ra->get_dir($old_path, $old_rev);
1722 if (defined $props->{"svn:mergeinfo"}) {
1723 my %omi = map {split ":", $_ } split "\n",
1724 $props->{"svn:mergeinfo"};
1725 $old_minfo = \%omi;
1726 }
1735 - $self->{cached_mergeinfo_rev}{$old_path} = $old_rev;
1736 -
1737 - # Cache the new mergeinfo.
1738 - $self->{cached_mergeinfo_rev}{$path} = $rev;
1727
1728 my %changes = ();
1729 foreach my $p (keys %minfo) {