Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
git-svn: re-enable repacking flags
author
Eric Wong
<normalperson@yhbt.net>
Wed, 31 Jan 2007 20:28:10 +0000
(12:28 -0800)
committer
Eric Wong
<normalperson@yhbt.net>
Fri, 23 Feb 2007 08:57:11 +0000
(
00:57
-0800)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
47a0b75
)
diff --git
a/git-svn.perl
b/git-svn.perl
index ddb038260851659c90070fb0e42ad4458e86ce2f..1fd65526d186e017640543af240dea0ccb2b421a 100755
(executable)
--- a/
git-svn.perl
+++ b/
git-svn.perl
@@
-52,7
+52,6
@@
BEGIN
$sha1 = qr/[a-f\d]{40}/;
$sha1_short = qr/[a-f\d]{4,40}/;
my ($_stdin, $_help, $_edit,
$sha1 = qr/[a-f\d]{40}/;
$sha1_short = qr/[a-f\d]{4,40}/;
my ($_stdin, $_help, $_edit,
- $_repack, $_repack_nr, $_repack_flags,
$_message, $_file,
$_template, $_shared,
$_version,
$_message, $_file,
$_template, $_shared,
$_version,
@@
-64,10
+63,11
@@
BEGIN
'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache );
my %fc_opts = ( 'follow-parent|follow' => \$Git::SVN::_follow_parent,
'authors-file|A=s' => \$_authors,
'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache );
my %fc_opts = ( 'follow-parent|follow' => \$Git::SVN::_follow_parent,
'authors-file|A=s' => \$_authors,
- 'repack:i' => \$_repack,
+ 'repack:i' => \$
Git::SVN::
_repack,
'no-metadata' => \$Git::SVN::_no_metadata,
'quiet|q' => \$_q,
'no-metadata' => \$Git::SVN::_no_metadata,
'quiet|q' => \$_q,
- 'repack-flags|repack-args|repack-opts=s' => \$_repack_flags,
+ 'repack-flags|repack-args|repack-opts=s' =>
+ \$Git::SVN::_repack_flags,
%remote_opts );
my ($_trunk, $_tags, $_branches);
%remote_opts );
my ($_trunk, $_tags, $_branches);
@@
-158,6
+158,7
@@
BEGIN
unless ($cmd =~ /^(?:init|multi-init|commit-diff)$/) {
Git::SVN::Migration::migration_check();
}
unless ($cmd =~ /^(?:init|multi-init|commit-diff)$/) {
Git::SVN::Migration::migration_check();
}
+Git::SVN::init_vars();
eval {
Git::SVN::verify_remotes_sanity();
$cmd{$cmd}->[0]->(@ARGV);
eval {
Git::SVN::verify_remotes_sanity();
$cmd{$cmd}->[0]->(@ARGV);
@@
-626,11
+627,13
@@
sub cmt_metadata {
package Git::SVN;
use strict;
use warnings;
package Git::SVN;
use strict;
use warnings;
-use vars qw/$default_repo_id $default_ref_id $_no_metadata $_follow_parent/;
+use vars qw/$default_repo_id $default_ref_id $_no_metadata $_follow_parent
+ $_repack $_repack_flags/;
use Carp qw/croak/;
use File::Path qw/mkpath/;
use IPC::Open3;
use Carp qw/croak/;
use File::Path qw/mkpath/;
use IPC::Open3;
+my $_repack_nr;
# properties that we do not log:
my %SKIP_PROP;
BEGIN {
# properties that we do not log:
my %SKIP_PROP;
BEGIN {
@@
-676,6
+679,14
@@
sub read_all_remotes {
$r;
}
$r;
}
+sub init_vars {
+ if (defined $_repack) {
+ $_repack = 1000 if ($_repack <= 0);
+ $_repack_nr = $_repack;
+ $_repack_flags ||= '-d';
+ }
+}
+
sub verify_remotes_sanity {
return unless -d $ENV{GIT_DIR};
my %seen;
sub verify_remotes_sanity {
return unless -d $ENV{GIT_DIR};
my %seen;
@@
-1025,6
+1036,13
@@
sub do_git_commit {
$self->{last_rev} = $log_entry->{revision};
$self->{last_commit} = $commit;
print "r$log_entry->{revision} = $commit ($self->{ref_id})\n";
$self->{last_rev} = $log_entry->{revision};
$self->{last_commit} = $commit;
print "r$log_entry->{revision} = $commit ($self->{ref_id})\n";
+ if (defined $_repack && (--$_repack_nr == 0)) {
+ $_repack_nr = $_repack;
+ # repack doesn't use any arguments with spaces in them, does it?
+ print "Running git repack $_repack_flags ...\n";
+ command_noisy('repack', split(/\s+/, $_repack_flags));
+ print "Done repacking\n";
+ }
return $commit;
}
return $commit;
}