Re: [PATCH] git-svn: persistent memoization
- From
- Eric Wong <normalperson@yhbt.net>
- Date
- Feb 1, 2010, 04:03 UTC
- Message-ID
- <20100201040312.GA26199@dcvr.yhbt.net>
- In-Reply-To
- <1264821262-28322-1-git-send-email-amyrick@apple.com>
Andrew Myrick <amyrick@apple.com> wrote:
Show 5 quoted lines
> Make memoization of the svn:mergeinfo processing functions persistent with
> Memoize::Storable so that the memoization tables don't need to be regenerated
> every time the user runs git-svn fetch.
>
> The Memoize::Storable hashes are stored in ENV{GIT_DIR}/svn/caches.Hi Andrew,
Perhaps "$ENV{GIT_DIR}/svn/.caches" is better here since older versions of git svn used "$ENV{GIT_DIR}/svn/$refname" in the top-level and "caches" may conflict with existing repos.
> -use File::Path qw/mkpath/; > +use File::Path qw/mkpath make_path/;
File::Path::make_path is very recent not in Perls distributed by most vendors. My 5.10.0 installation (Debian stable) doesn't have it, and I also don't see a good reason to use it over the traditional mkpath.
I think I'll squash the following patch and Ack. Let me know if you have any objections, thanks.! (also wraps long lines to 80 chars)
diff --git a/git-svn.perl b/git-svn.perl index 0153439..265852f 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -1652,7 +1652,7 @@ use vars qw/$default_repo_id $default_ref_id $_no_metadata $_follow_parent $_use_svnsync_props $no_reuse_existing $_minimize_url $_use_log_author $_add_author_from $_localtime/; use Carp qw/croak/; -use File::Path qw/mkpath make_path/; +use File::Path qw/mkpath/; use File::Copy qw/copy/; use IPC::Open3; use Memoize; # core since 5.8.0, Jul 2002 @@ -3126,25 +3126,25 @@ sub has_no_changes { return if $memoized; $memoized = 1; - my $cache_path = "$ENV{GIT_DIR}/svn/caches/"; - make_path($cache_path) unless -d $cache_path; + my $cache_path = "$ENV{GIT_DIR}/svn/.caches/"; + mkpath([$cache_path]) unless -d $cache_path; - tie my %lookup_svn_merge_cache => - 'Memoize::Storable',"$cache_path/lookup_svn_merge.db", 'nstore'; + tie my %lookup_svn_merge_cache => 'Memoize::Storable', + "$cache_path/lookup_svn_merge.db", 'nstore'; memoize 'lookup_svn_merge', SCALAR_CACHE => 'FAULT', LIST_CACHE => ['HASH' => \%lookup_svn_merge_cache], ; - tie my %check_cherry_pick_cache => - 'Memoize::Storable',"$cache_path/check_cherry_pick.db", 'nstore'; + tie my %check_cherry_pick_cache => 'Memoize::Storable', + "$cache_path/check_cherry_pick.db", 'nstore'; memoize 'check_cherry_pick', SCALAR_CACHE => 'FAULT', LIST_CACHE => ['HASH' => \%check_cherry_pick_cache], ; - tie my %has_no_changes_cache => - 'Memoize::Storable',"$cache_path/has_no_changes.db", 'nstore'; + tie my %has_no_changes_cache => 'Memoize::Storable', + "$cache_path/has_no_changes.db", 'nstore'; memoize 'has_no_changes', SCALAR_CACHE => ['HASH' => \%has_no_changes_cache], LIST_CACHE => 'FAULT',
-- Eric Wong