diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2005-07-03 11:34:59 +0200 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2005-07-03 11:40:44 +0200 |
commit | f9714a4a0cd4ed0ccca3833743d98ea874a2232d (patch) | |
tree | de5d7bba63538f29b8ea2b801d932b7679289b96 /git-cvsimport-script | |
parent | Fixed a typo in Documentation/git-cvsimport-script.txt. (diff) | |
download | tgif-f9714a4a0cd4ed0ccca3833743d98ea874a2232d.tar.xz |
Make specification of CVS module to convert optional.
If we're inside a checked out CVS repository, there is
no need to explicitly specify the module as it is
available in CVS/Repository.
Also read CVS/Root if it's available and -d is not specified.
Finally, explicitly pass root to cvsps as CVS/Root takes
precedence over CVSROOT.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
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"; } |