git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/5] git-svn: memoize conversion of SVN merge ticket info to git commit ranges

From
Sam Vilain <sam@vilain.net>
Date
Dec 20, 2009, 21:24 UTC
Message-ID
<1261344246.20752.24.camel@denix>
In-Reply-To
<1261240435-8948-3-git-send-email-sam@vilain.net>
On Sun, 2009-12-20 at 05:33 +1300, Sam Vilain wrote:
Show 40 quoted lines
> Each time the svn mergeinfo ticket changes, we look it up in the rev_map;
> when there are a lot of merged branches, this will result in many repeated
> lookups of the same information for subsequent commits.  Arrange the slow
> part of the function so that it may be memoized, and memoize it.  The more
> expensive revision walking operation can be memoized separately.
> 
> Signed-off-by: Sam Vilain <sam@vilain.net>
> ---
>  git-svn.perl |   91 ++++++++++++++++++++++++++++++++++-----------------------
>  1 files changed, 54 insertions(+), 37 deletions(-)
> 
> diff --git a/git-svn.perl b/git-svn.perl
> index a4b052c..3b17a83 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -1634,6 +1634,7 @@ use Carp qw/croak/;
>  use File::Path qw/mkpath/;
>  use File::Copy qw/copy/;
>  use IPC::Open3;
> +use Memoize;  # core since 5.8.0, Jul 2002
>  
>  my ($_gc_nr, $_gc_period);
>  
> @@ -2967,6 +2968,55 @@ sub find_extra_svk_parents {
>  	}
>  }
>  
> +sub lookup_svn_merge {
> +	my $uuid = shift;
> +	my $url = shift;
> +	my $merge = shift;
> +
> +	my ($source, $revs) = split ":", $merge;
> +	my $path = $source;
> +	$path =~ s{^/}{};
> +	my $gs = Git::SVN->find_by_url($url.$source, $url, $path);
> +	if ( !$gs ) {
> +		warn "Couldn't find revmap for $url$source\n";
> +		next;
> +	}
As mentioned in the other thread, that 'next' should now be 'return'.
Sam
Previous: Sam VilainNext: Eric Wong
Message 8 of 13 in “Efficiency and correctness patches for git-svn mergeinfo support”
  1. Sam VilainDec 19, 2009
  2. 1/5 git-svn: expand the svn mergeinfo test suite, highlighting some failuresSam Vilain, Dec 19, 2009
  3. 2/5 git-svn: memoize conversion of SVN merge ticket info to git commit rangesSam Vilain, Dec 19, 2009
  4. 3/5 git-svn: fix some mistakes with interpreting SVN mergeinfo commit rangesSam Vilain, Dec 19, 2009
  5. 4/5 git-svn: exclude already merged tips using one rev-list callSam Vilain, Dec 19, 2009
  6. 5/5 git-svn: detect cherry-picks correctly.Sam Vilain, Dec 19, 2009
  7. Sam VilainDec 19, 2009
  8. Sam VilainDec 20, 2009
  9. Eric WongDec 21, 2009
  10. Sam VilainDec 19, 2009
  11. Andrew MyrickDec 19, 2009
  12. Sam VilainDec 20, 2009
  13. Andrew MyrickDec 20, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.