diff options
Diffstat (limited to 'git-cvsimport-script')
-rwxr-xr-x | git-cvsimport-script | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/git-cvsimport-script b/git-cvsimport-script index 7ee8845a3d..dffd134e63 100755 --- a/git-cvsimport-script +++ b/git-cvsimport-script @@ -26,35 +26,53 @@ use POSIX qw(strftime dup2); $SIG{'PIPE'}="IGNORE"; $ENV{'TZ'}="UTC"; -our($opt_h,$opt_o,$opt_v,$opt_d,$opt_p); +our($opt_h,$opt_o,$opt_v,$opt_d,$opt_p,$opt_C); sub usage() { print STDERR <<END; Usage: ${\basename $0} # fetch/update GIT from CVS [ -o branch-for-HEAD ] [ -h ] [ -v ] [ -d CVSROOT ] - [ -p opts-for-cvsps ] - CVS_module [ GIT_repository ] + [ -p opts-for-cvsps ] [ -C GIT_repository ] + [ CVS_module ] END exit(1); } -getopts("hqvo:d:p:") or usage(); +getopts("hqvo:d:p:C:") or usage(); usage if $opt_h; -@ARGV == 1 or @ARGV == 2 or usage(); - -my($cvs_tree, $git_tree) = @ARGV; +@ARGV <= 1 or usage(); if($opt_d) { $ENV{"CVSROOT"} = $opt_d; +} elsif(-f 'CVS/Root') { + open my $f, '<', 'CVS/Root' or die 'Failed to open CVS/Root'; + $opt_d = <$f>; + chomp $opt_d; + close $f; + $ENV{"CVSROOT"} = $opt_d; } elsif($ENV{"CVSROOT"}) { $opt_d = $ENV{"CVSROOT"}; } else { die "CVSROOT needs to be set"; } $opt_o ||= "origin"; +my $git_tree = $opt_C; $git_tree ||= "."; +my $cvs_tree; +if ($#ARGV == 0) { + $cvs_tree = $ARGV[0]; +} elsif (-f 'CVS/Repository') { + open my $f, '<', 'CVS/Repository' or + die 'Failed to open CVS/Repository'; + $cvs_tree = <$f>; + chomp $cvs_tree; + close $f +} else { + usage(); +} + select(STDERR); $|=1; select(STDOUT); @@ -378,7 +396,7 @@ die "Cannot fork: $!\n" unless defined $pid; unless($pid) { my @opt; @opt = split(/,/,$opt_p) if defined $opt_p; - exec("cvsps",@opt,"-x","-A","--cvs-direct",$cvs_tree); + exec("cvsps",@opt,"-x","-A","--cvs-direct",'--root',$opt_d,$cvs_tree); die "Could not start cvsps: $!\n"; } |