projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "Revert "diff-delta: produce optimal pack data""
[git.git]
/
git-svnimport.perl
diff --git
a/git-svnimport.perl
b/git-svnimport.perl
index
cb241d1
..
ee2940f
100755
(executable)
--- a/
git-svnimport.perl
+++ b/
git-svnimport.perl
@@
-10,7
+10,6
@@
# The head revision is on branch "origin" by default.
# You can change that with the '-o' option.
# The head revision is on branch "origin" by default.
# You can change that with the '-o' option.
-require 5.008; # for shell-safe open("-|",LIST)
use strict;
use warnings;
use Getopt::Std;
use strict;
use warnings;
use Getopt::Std;
@@
-30,19
+29,19
@@
die "Need SVN:Core 1.2.1 or better" if $SVN::Core::VERSION lt "1.2.1";
$SIG{'PIPE'}="IGNORE";
$ENV{'TZ'}="UTC";
$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_s,$opt_l,$opt_d,$opt_D);
+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_
s,$opt_l,$opt_d,$opt_D);
sub usage() {
print STDERR <<END;
Usage: ${\basename $0} # fetch/update GIT from SVN
[-o branch-for-HEAD] [-h] [-v] [-l max_rev]
[-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname]
sub usage() {
print STDERR <<END;
Usage: ${\basename $0} # fetch/update GIT from SVN
[-o branch-for-HEAD] [-h] [-v] [-l max_rev]
[-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname]
- [-d|-D] [-i] [-u] [-s start_chg] [-m] [-M regex] [SVN_URL]
+ [-d|-D] [-i] [-u] [-
r] [-
s start_chg] [-m] [-M regex] [SVN_URL]
END
exit(1);
}
END
exit(1);
}
-getopts("b:C:dDhil:mM:o:s:t:T:uv") or usage();
+getopts("b:C:dDhil:mM:o:
r
s:t:T:uv") or usage();
usage if $opt_h;
my $tag_name = $opt_t || "tags";
usage if $opt_h;
my $tag_name = $opt_t || "tags";
@@
-96,8
+95,10
@@
sub new {
sub conn {
my $self = shift;
my $repo = $self->{'fullrep'};
sub conn {
my $self = shift;
my $repo = $self->{'fullrep'};
- my $s = SVN::Ra->new($repo);
-
+ my $auth = SVN::Core::auth_open ([SVN::Client::get_simple_provider,
+ SVN::Client::get_ssl_server_trust_file_provider,
+ SVN::Client::get_username_provider]);
+ my $s = SVN::Ra->new(url => $repo, auth => $auth);
die "SVN connection to $repo: $!\n" unless defined $s;
$self->{'svn'} = $s;
$self->{'repo'} = $repo;
die "SVN connection to $repo: $!\n" unless defined $s;
$self->{'svn'} = $s;
$self->{'repo'} = $repo;
@@
-316,12
+317,16
@@
sub get_file($$$) {
die $res->status_line." at $url\n";
}
} else {
die $res->status_line." at $url\n";
}
} else {
- $name = $svn->file("
/
$svnpath",$rev);
+ $name = $svn->file("$svnpath",$rev);
return undef unless defined $name;
}
return undef unless defined $name;
}
- open my $F, '-|', "git-hash-object", "-w", $name
+ my $pid = open(my $F, '-|');
+ die $! unless defined $pid;
+ if (!$pid) {
+ exec("git-hash-object", "-w", $name)
or die "Cannot create object: $!\n";
or die "Cannot create object: $!\n";
+ }
my $sha = <$F>;
chomp $sha;
close $F;
my $sha = <$F>;
chomp $sha;
close $F;
@@
-396,7
+401,12
@@
sub copy_path($$$$$$$$) {
$srcpath =~ s#/*$#/#;
}
$srcpath =~ s#/*$#/#;
}
- open my $f,"-|","git-ls-tree","-r","-z",$gitrev,$srcpath;
+ my $pid = open my $f,'-|';
+ die $! unless defined $pid;
+ if (!$pid) {
+ exec("git-ls-tree","-r","-z",$gitrev,$srcpath)
+ or die $!;
+ }
local $/ = "\0";
while(<$f>) {
chomp;
local $/ = "\0";
while(<$f>) {
chomp;
@@
-544,23
+554,34
@@
sub commit {
}
}
}
}
- if(@old) {
- open my $F, "-|", "git-ls-files", "-z", @old or die $!;
- @old = ();
+ while(@old) {
+ my @o1;
+ if(@old > 55) {
+ @o1 = splice(@old,0,50);
+ } else {
+ @o1 = @old;
+ @old = ();
+ }
+ my $pid = open my $F, "-|";
+ die "$!" unless defined $pid;
+ if (!$pid) {
+ exec("git-ls-files", "-z", @o1) or die $!;
+ }
+ @o1 = ();
local $/ = "\0";
while(<$F>) {
chomp;
local $/ = "\0";
while(<$F>) {
chomp;
- push(@o
ld
,$_);
+ push(@o
1
,$_);
}
close($F);
}
close($F);
- while(@o
ld
) {
+ while(@o
1
) {
my @o2;
my @o2;
- if(@o
ld
> 55) {
- @o2 = splice(@o
ld
,0,50);
+ if(@o
1
> 55) {
+ @o2 = splice(@o
1
,0,50);
} else {
} else {
- @o2 = @o
ld
;
- @o
ld
= ();
+ @o2 = @o
1
;
+ @o
1
= ();
}
system("git-update-index","--force-remove","--",@o2);
die "Cannot remove files: $?\n" if $?;
}
system("git-update-index","--force-remove","--",@o2);
die "Cannot remove files: $?\n" if $?;
@@
-641,6
+662,7
@@
sub commit {
$pr->reader();
$message =~ s/[\s\n]+\z//;
$pr->reader();
$message =~ s/[\s\n]+\z//;
+ $message = "r$revision: $message" if $opt_r;
print $pw "$message\n"
or die "Error writing to git-commit-tree: $!\n";
print $pw "$message\n"
or die "Error writing to git-commit-tree: $!\n";