Skip to content

Commit

Permalink
git-svn: remove mergeinfo rev caching
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Eric Wong committed Oct 24, 2014
1 parent 54b9534 commit 2b6c613
Showing 1 changed file with 9 additions and 21 deletions.
30 changes: 9 additions & 21 deletions perl/Git/SVN.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 2b6c613

Please sign in to comment.