Re: [PATCH] git-svn: persistent memoization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Myrick <amyrick@xxxxxxxxx> wrote:
> 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
--
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]