- $SVN::Error::handler = sub {
- ($err) = @_;
- skip_unknown_revs($err);
- };
- foreach my $gs (@gs) {
- my $min_r = $min;
- my $rdb_max = $gs->rev_db_max;
- next if $rdb_max >= $max;
- $min_r = $rdb_max + 1 if ($rdb_max > $min_r);
- $self->get_log([$gs->{path}], $min_r, $max,
- 0, 1, 1, sub
- { my ($paths, $rev) = @_;
- push @{$revs{$rev}},
- [ $gs,
- dup_changed_paths($paths) ] });
-
- next unless ($err && $max >= $head);
-
- print STDERR "Path '$gs->{path}' ",
- "was probably deleted:\n",
- $err->expanded_message,
- "\nWill attempt to follow ",
- "revisions r$min .. r$max ",
- "committed before the deletion\n";
- my $hi = $max;
- while (--$hi >= $min) {
- my $ok;
- $self->get_log([$gs->{path}], $min, $hi,
- 0, 1, 1, sub {
- my ($paths, $rev) = @_;
- $ok = $rev;
- push @{$revs{$rev}}, [ $gs,
- dup_changed_paths($_[0])]});
- if ($ok) {
- print STDERR "r$min .. r$ok OK\n";
- last;
- }
- }
- }
+ $SVN::Error::handler = \&skip_unknown_revs;
+ $self->get_log([''], $min, $max, 0, 1, 1, sub {
+ my ($paths, $r, $author, $date, $log) = @_;
+ $revs{$r} = [ dup_changed_paths($paths),
+ { author => $author,
+ date => $date,
+ log => $log } ] });