diff options
author | Eric Wong <normalperson@yhbt.net> | 2007-01-04 18:09:56 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-04 22:28:46 -0800 |
commit | 2a3240beaad73dd86d9220c8a8a6e76c6d034a57 (patch) | |
tree | af8062160d919124c1fce9a4c1af400fd59727e1 /git-svn.perl | |
parent | 0d313b2b7bb219542473a25ad042f4b990e69a45 (diff) | |
download | git-2a3240beaad73dd86d9220c8a8a6e76c6d034a57.tar.gz |
git-svn: make --repack work consistently between fetch and multi-fetch
Since fetch reforks itself at most every 1000 revisions, we
need to update the counter in the parent process to have a
working count if we set our repack interval to be > ~1000
revisions. multi-fetch has always done this correctly
because of an extra process; now fetch uses the extra process;
as well.
While we're at it, only compile the $sha1 regex that checks for
repacking once.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/git-svn.perl b/git-svn.perl index 0fc386a715..537776239c 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -102,7 +102,7 @@ my %cmt_opts = ( 'edit|e' => \$_edit, ); my %cmd = ( - fetch => [ \&fetch, "Download new revisions from SVN", + fetch => [ \&cmd_fetch, "Download new revisions from SVN", { 'revision|r=s' => \$_revision, %fc_opts } ], init => [ \&init, "Initialize a repo for tracking" . " (requires URL argument)", @@ -293,6 +293,10 @@ sub init { setup_git_svn(); } +sub cmd_fetch { + fetch_child_id($GIT_SVN, @_); +} + sub fetch { check_upgrade_needed(); $SVN_URL ||= file_to_s("$GIT_SVN_DIR/info/url"); @@ -836,7 +840,6 @@ sub fetch_child_id { my $ref = "$GIT_DIR/refs/remotes/$id"; defined(my $pid = open my $fh, '-|') or croak $!; if (!$pid) { - $_repack = undef; $GIT_SVN = $ENV{GIT_SVN_ID} = $id; init_vars(); fetch(@_); @@ -844,7 +847,7 @@ sub fetch_child_id { } while (<$fh>) { print $_; - check_repack() if (/^r\d+ = $sha1/); + check_repack() if (/^r\d+ = $sha1/o); } close $fh or croak $?; } @@ -1407,7 +1410,6 @@ sub git_commit { # this output is read via pipe, do not change: print "r$log_msg->{revision} = $commit\n"; - check_repack(); return $commit; } |