From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Khapyorsky Subject: Re: git-svnimport failed and now git-repack hates me Date: Thu, 4 Jan 2007 23:31:42 +0200 Message-ID: <20070104213142.GE11861@sashak.voltaire.com> References: <204011cb0701031552j8292d23v950f828279702d3@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Junio C Hamano , Shawn Pearce , Git Mailing List X-From: git-owner@vger.kernel.org Thu Jan 04 22:24:39 2007 Return-path: Envelope-to: gcvg-git@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1H2a4j-0004PA-O5 for gcvg-git@gmane.org; Thu, 04 Jan 2007 22:24:38 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030242AbXADVYe (ORCPT ); Thu, 4 Jan 2007 16:24:34 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1030243AbXADVYe (ORCPT ); Thu, 4 Jan 2007 16:24:34 -0500 Received: from taurus.voltaire.com ([193.47.165.240]:18584 "EHLO taurus.voltaire.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030242AbXADVYd (ORCPT ); Thu, 4 Jan 2007 16:24:33 -0500 Received: from sashak ([172.25.5.176]) by taurus.voltaire.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 4 Jan 2007 23:24:30 +0200 Received: by sashak (sSMTP sendmail emulation); Thu, 4 Jan 2007 23:31:42 +0200 To: Linus Torvalds , Chris Lee Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.13 (2006-08-11) X-OriginalArrivalTime: 04 Jan 2007 21:24:30.0919 (UTC) FILETIME=[B8C63570:01C73046] Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: On 17:59 Wed 03 Jan , Linus Torvalds wrote: > > However, I don't know what the proper magic is for svnimport to do that > sane "do it in chunks and tell when you're all done". Or even better - to > just make it repack properly and not keep everything in memory. > As to who knows how to fix git-svnimport to do something saner, I have no > clue.. Sasha seems to have touched it last. Sasha? I guess it should not be hard to do svnimport in incrementally with repacking. Like this: diff --git a/git-svnimport.perl b/git-svnimport.perl index 071777b..afbbe63 100755 --- a/git-svnimport.perl +++ b/git-svnimport.perl @@ -31,12 +31,13 @@ $SIG{'PIPE'}="IGNORE"; $ENV{'TZ'}="UTC"; our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T, - $opt_b,$opt_r,$opt_I,$opt_A,$opt_s,$opt_l,$opt_d,$opt_D,$opt_S,$opt_F,$opt_P); + $opt_b,$opt_r,$opt_I,$opt_A,$opt_s,$opt_l,$opt_d,$opt_D,$opt_S,$opt_F, + $opt_P,$opt_R); sub usage() { print STDERR <new; -$svn->{'svn'}->get_log("/",$current_rev,$opt_l,0,1,1,\&commit_all,$pool); -$pool->clear; +my $from_rev; +my $to_rev = $current_rev; + +while ($to_rev < $opt_l) { + $from_rev = $to_rev; + $to_rev = $from_rev + $repack_after; + $to_rev = $opt_l if $opt_l < $to_rev; + print "Fetching from $from_rev to $to_rev ...\n" if $opt_v; + my $pool=SVN::Pool->new; + $svn->{'svn'}->get_log("/",$from_rev,$to_rev,0,1,1,\&commit_all,$pool); + $pool->clear; + my $pid = fork(); + die "Fork: $!\n" unless defined $pid; + unless($pid) { + exec("git-repack", "-d") + or die "Cannot repack: $!\n"; + } + waitpid($pid, 0); +} unlink($git_index); Chris, it works fine for me with small repository (~9000 revisions), but I don't have such huge one as yours. Could you try? Thanks. Sasha