Sam Vilain <sam@xxxxxxxxxx> wrote: > Cache the maximum revision for each rev_db URL rather than looking it > up each time. This saves a lot of time when rebuilding indexes on a > freshly cloned repository. It looks correct, but I'm not sure how often we can even hit this optimization to make it worth it. Any live repositories and benchmarks you've run this on? (without the rev-list => log patch applied, which would be a big performance improvement if all log messages were under 16k). > Signed-off-by: Sam Vilain <sam@xxxxxxxxxx> > --- > git-svn.perl | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/git-svn.perl b/git-svn.perl > index 610563c..c9758a0 100755 > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -804,6 +804,7 @@ sub working_head_info { > my ($head, $refs) = @_; > my ($fh, $ctx) = command_output_pipe('log', $head); > my $hash; > + my %max; > while (<$fh>) { > if ( m{^commit ($::sha1)$} ) { > $hash = $1; > @@ -812,11 +813,14 @@ sub working_head_info { > next unless s{^\s+(git-svn-id:)}{$1}; > my ($url, $rev, $uuid) = extract_metadata($_); > if (defined $url && defined $rev) { > + next if $max{$url} and $max{$url} < $rev; > if (my $gs = Git::SVN->find_by_url($url)) { > my $c = $gs->rev_db_get($rev); > if ($c && $c eq $hash) { > close $fh; # break the pipe > return ($url, $rev, $uuid, $gs); > + } else { > + $max{$url} ||= $gs->rev_db_max; > } > } > } -- Eric Wong - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html