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>
This commit is contained in:
@ -1710,32 +1710,20 @@ sub mergeinfo_changes {
|
|||||||
my %minfo = map {split ":", $_ } split "\n", $mergeinfo_prop;
|
my %minfo = map {split ":", $_ } split "\n", $mergeinfo_prop;
|
||||||
my $old_minfo = {};
|
my $old_minfo = {};
|
||||||
|
|
||||||
# Initialize cache on the first call.
|
my $ra = $self->ra;
|
||||||
unless (defined $self->{cached_mergeinfo_rev}) {
|
# Give up if $old_path isn't in the repo.
|
||||||
$self->{cached_mergeinfo_rev} = {};
|
# 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);
|
||||||
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);
|
|
||||||
if (defined $props->{"svn:mergeinfo"}) {
|
if (defined $props->{"svn:mergeinfo"}) {
|
||||||
my %omi = map {split ":", $_ } split "\n",
|
my %omi = map {split ":", $_ } split "\n",
|
||||||
$props->{"svn:mergeinfo"};
|
$props->{"svn:mergeinfo"};
|
||||||
$old_minfo = \%omi;
|
$old_minfo = \%omi;
|
||||||
}
|
}
|
||||||
$self->{cached_mergeinfo_rev}{$old_path} = $old_rev;
|
|
||||||
|
|
||||||
# Cache the new mergeinfo.
|
|
||||||
$self->{cached_mergeinfo_rev}{$path} = $rev;
|
|
||||||
|
|
||||||
my %changes = ();
|
my %changes = ();
|
||||||
foreach my $p (keys %minfo) {
|
foreach my $p (keys %minfo) {
|
||||||
|
Reference in New Issue
Block a user