Skip to content

Commit 54b9534

Browse files
author
Eric Wong
committed
git-svn: cache only mergeinfo revisions
This should reduce excessive memory usage from the new mergeinfo caches without hurting performance too much, assuming reasonable latency to the SVN server. Cc: Hin-Tak Leung <[email protected]> Suggested-by: Jakob Stoklund Olesen <[email protected]> Signed-off-by: Eric Wong <[email protected]>
1 parent d0b34f2 commit 54b9534

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

perl/Git/SVN.pm

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1713,13 +1713,10 @@ sub mergeinfo_changes {
17131713
# Initialize cache on the first call.
17141714
unless (defined $self->{cached_mergeinfo_rev}) {
17151715
$self->{cached_mergeinfo_rev} = {};
1716-
$self->{cached_mergeinfo} = {};
17171716
}
17181717

17191718
my $cached_rev = $self->{cached_mergeinfo_rev}{$old_path};
1720-
if (defined $cached_rev && $cached_rev == $old_rev) {
1721-
$old_minfo = $self->{cached_mergeinfo}{$old_path};
1722-
} else {
1719+
unless (defined $cached_rev && $cached_rev == $old_rev) {
17231720
my $ra = $self->ra;
17241721
# Give up if $old_path isn't in the repo.
17251722
# This is probably a merge on a subtree.
@@ -1728,19 +1725,16 @@ sub mergeinfo_changes {
17281725
"directory didn't exist in r$old_rev\n";
17291726
return {};
17301727
}
1731-
my (undef, undef, $props) =
1732-
$self->ra->get_dir($old_path, $old_rev);
1733-
if (defined $props->{"svn:mergeinfo"}) {
1734-
my %omi = map {split ":", $_ } split "\n",
1735-
$props->{"svn:mergeinfo"};
1736-
$old_minfo = \%omi;
1737-
}
1738-
$self->{cached_mergeinfo}{$old_path} = $old_minfo;
1739-
$self->{cached_mergeinfo_rev}{$old_path} = $old_rev;
17401728
}
1729+
my (undef, undef, $props) = $self->ra->get_dir($old_path, $old_rev);
1730+
if (defined $props->{"svn:mergeinfo"}) {
1731+
my %omi = map {split ":", $_ } split "\n",
1732+
$props->{"svn:mergeinfo"};
1733+
$old_minfo = \%omi;
1734+
}
1735+
$self->{cached_mergeinfo_rev}{$old_path} = $old_rev;
17411736

17421737
# Cache the new mergeinfo.
1743-
$self->{cached_mergeinfo}{$path} = \%minfo;
17441738
$self->{cached_mergeinfo_rev}{$path} = $rev;
17451739

17461740
my %changes = ();

0 commit comments

Comments
 (0)