Let "git svn" run "git gc --auto" every 100 imported commits, to reduce the number of loose objects. To handle the common use case of frequent imports, where each invocation typically fetches less than 100 commits, randomly set the counter to something in the range 1-100 on initialization. It's almost as good as saving the counter, and much less of a hassle. Oh, and 100 is just my best guess at a reasonable number. It could conceivably need tweaking. Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> --- On 2008-01-19 13:35:57 +0100, Karl Hasselström wrote: > On 2008-01-18 12:44:08 -0800, Junio C Hamano wrote: > > > Patches? > > Just hot air and noise for now from my end. Sorry. OK, it didn't feel good saying that. So here's my attempt at being a model citizen. (It's not hard with a change this small ...) I'm not quite sure how this should interact with the --repack flag. Right now they just coexist, except for never running right after one another, but conceivably we should do something cleverer. Eric? git-svn.perl | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/git-svn.perl b/git-svn.perl index 9f2b587..89e1d61 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -1247,7 +1247,7 @@ use File::Path qw/mkpath/; use File::Copy qw/copy/; use IPC::Open3; -my $_repack_nr; +my ($_repack_nr, $_gc_nr, $_gc_period); # properties that we do not log: my %SKIP_PROP; BEGIN { @@ -1413,6 +1413,8 @@ sub init_vars { $_repack_nr = $_repack; $_repack_flags ||= '-d'; } + $_gc_period = 100; + $_gc_nr = int(rand($_gc_period)) + 1; } sub verify_remotes_sanity { @@ -2157,6 +2159,9 @@ sub do_git_commit { print "Running git repack $_repack_flags ...\n"; command_noisy('repack', split(/\s+/, $_repack_flags)); print "Done repacking\n"; + } elsif (--$_gc_nr == 0) { + $_gc_nr = $_gc_period; + command_noisy('gc', '--auto'); } return $commit; } - 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