git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Karl Hasselström" <kha@treskal.com>
To: Eric Wong <normalperson@yhbt.net>
Cc: git@vger.kernel.org, Kevin Ballard <kevin@sb.org>,
	Junio C Hamano <gitster@pobox.com>
Subject: [PATCH] Let "git svn" run "git gc --auto" occasionally
Date: Sat, 19 Jan 2008 23:36:30 +0100	[thread overview]
Message-ID: <20080119223249.8227.31460.stgit@yoghurt> (raw)
In-Reply-To: <20080119123557.GA30778@diana.vm.bytemark.co.uk>

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@treskal.com>

---

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;
 }

  parent reply	other threads:[~2008-01-19 22:37 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-18 12:17 git-svn should default to --repack Kevin Ballard
2008-01-18 15:56 ` Karl Hasselström
2008-01-18 20:44   ` Junio C Hamano
2008-01-19 12:35     ` Karl Hasselström
2008-01-19 15:05       ` Kevin Ballard
2008-01-19 22:36       ` Karl Hasselström [this message]
2008-01-19 22:50         ` [PATCH] Let "git svn" run "git gc --auto" occasionally Harvey Harrison
2008-01-20  3:37           ` Eric Wong
2008-01-20  9:34             ` Karl Hasselström
2008-01-20 19:17               ` Junio C Hamano
2008-01-21 22:48                 ` Eric Wong
2008-01-22  0:30                   ` Junio C Hamano
2008-01-22  0:39                     ` Eric Wong
2008-01-22  1:52                       ` Junio C Hamano
2008-01-23  2:43                         ` git filter-branch should run git gc --auto Kevin Ballard
2008-01-23  2:46                           ` Junio C Hamano
2008-01-23  2:52                             ` Junio C Hamano
2008-01-23  3:03                               ` Kevin Ballard
2008-01-23  2:54                             ` Harvey Harrison
2008-01-23  2:58                             ` Kevin Ballard
2008-01-23  5:07                               ` Sam Vilain
2008-01-23  8:18                                 ` Kevin Ballard
2008-01-23  6:44                             ` Mike Hommey
2008-01-23 13:00                               ` Johannes Schindelin
2008-01-23 19:22                               ` Junio C Hamano
2008-02-03 16:55                   ` [PATCH 0/2] "git svn" and "git gc --auto" Karl Hasselström
2008-02-03 16:56                     ` [PATCH 1/2] git-svn: Don't call git-repack anymore Karl Hasselström
2008-02-03 16:56                     ` [PATCH 2/2] Let "git svn" run "git gc --auto" occasionally Karl Hasselström
2008-01-20 21:39               ` [PATCH 1/2] git-svn: Don't call git-repack anymore Karl Hasselström
2008-01-20 21:40               ` [PATCH 2/2] Let "git svn" run "git gc --auto" occasionally Karl Hasselström

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080119223249.8227.31460.stgit@yoghurt \
    --to=kha@treskal.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kevin@sb.org \
    --cc=normalperson@yhbt.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).