git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 7/13] git-svn: add --repack and --repack-flags= options

From
EWEric Wong <normalperson@yhbt.net>
Date
Jun 13, 2006, 18:02 UTC
Message-ID
<1150221745225-git-send-email-normalperson@yhbt.net>
In-Reply-To
<11502217352245-git-send-email-normalperson@yhbt.net>
This should help keep disk usage sane for large imports.

--repack takes an optional argument for the interval, it defaults to 1000 if no argument is specified.

Arguments to --repack-flags are passed directly to git-repack. No arguments are passed by default.

Idea stolen from git-cvsimport :)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
 contrib/git-svn/git-svn.perl |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/contrib/git-svn/git-svn.perl b/contrib/git-svn/git-svn.perl
index a243060..a04cf1d 100755
--- a/contrib/git-svn/git-svn.perl
+++ b/contrib/git-svn/git-svn.perl
@@ -34,6 +34,7 @@ my $sha1 = qr/[a-f\d]{40}/;
 my $sha1_short = qr/[a-f\d]{4,40}/;
 my ($_revision,$_stdin,$_no_ignore_ext,$_no_stop_copy,$_help,$_rmdir,$_edit,
 	$_find_copies_harder, $_l, $_cp_similarity,
+	$_repack, $_repack_nr, $_repack_flags,
 	$_version, $_upgrade, $_authors, $_branch_all_refs);
 my (@_branch_from, %tree_map, %users);
 my ($_svn_co_url_revs, $_svn_pg_peg_revs);
@@ -42,7 +43,9 @@ my @repo_path_split_cache;
 my %fc_opts = ( 'no-ignore-externals' => \$_no_ignore_ext,
 		'branch|b=s' => \@_branch_from,
 		'branch-all-refs|B' => \$_branch_all_refs,
-		'authors-file|A=s' => \$_authors );
+		'authors-file|A=s' => \$_authors,
+		'repack:i' => \$_repack,
+		'repack-flags|repack-args|repack-opts=s' => \$_repack_flags);
 
 # yes, 'native' sets "\n".  Patches to fix this for non-*nix systems welcome:
 my %EOL = ( CR => "\015", LF => "\012", CRLF => "\015\012", native => "\012" );
@@ -82,6 +85,7 @@ GetOptions(%opts, 'help|H|h' => \$_help,
 		'version|V' => \$_version,
 		'id|i=s' => \$GIT_SVN) or exit 1;
 
+set_default_vals();
 usage(0) if $_help;
 version() if $_version;
 usage(1) unless defined $cmd;
@@ -1120,6 +1124,10 @@ sub git_commit {
 	sys(@update_ref);
 	sys('git-update-ref',"svn/$GIT_SVN/revs/$log_msg->{revision}",$commit);
 	print "r$log_msg->{revision} = $commit\n";
+	if ($_repack && (--$_repack_nr == 0)) {
+		$_repack_nr = $_repack;
+		sys("git repack $_repack_flags");
+	}
 	return $commit;
 }
 
@@ -1362,6 +1370,14 @@ sub read_repo_config {
 	}
 }
 
+sub set_default_vals {
+	if (defined $_repack) {
+		$_repack = 1000 if ($_repack <= 0);
+		$_repack_nr = $_repack;
+		$_repack_flags ||= '';
+	}
+}
+
 __END__
 
 Data structures:
-- 
1.4.0
Previous: Eric WongNext: Eric Wong
Message 8 of 14 in “git-svn: better branch support, SVN:: lib usage, feature additions”
  1. 0/13 git-svn: better branch support, SVN:: lib usage, feature additionsEric Wong, Jun 13, 2006
  2. 1/13 git-svn: support -C<num> passing to git-diff-treeEric Wong, Jun 13, 2006
  3. 2/13 git-svn: --branch-all-refs / -B supportEric Wong, Jun 13, 2006
  4. 3/13 git-svn: optimize --branch and --branch-all-refEric Wong, Jun 13, 2006
  5. 4/13 git-svn: support manually placed initial trees from fetchEric Wong, Jun 13, 2006
  6. 5/13 git-svn: Move all git-svn-related paths into $GIT_DIR/svnEric Wong, Jun 13, 2006
  7. 6/13 git-svn: minor cleanups, extra error-checkingEric Wong, Jun 13, 2006
  8. 7/13 git-svn: add --repack and --repack-flags= optionsEric Wong, Jun 13, 2006
  9. 8/13 git-svn: add --shared and --template= options to pass to init-dbEric Wong, Jun 13, 2006
  10. 9/13 git-svn: add some functionality to better support branches in svnEric Wong, Jun 13, 2006
  11. 10/13 git-svn: add UTF-8 message testEric Wong, Jun 13, 2006
  12. 11/13 git-svn: add 'log' command, a facsimile of basic `svn log'Eric Wong, Jun 13, 2006
  13. 12/13 git-svn: add support for Perl SVN::* librariesEric Wong, Jun 13, 2006
  14. 13/13 git-svn: make the $GIT_DIR/svn/*/revs directory obsoleteEric Wong, Jun 13, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.