X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-cvsimport.perl;h=95c5eec51ecc6ab6f142cef51eb4bd3b5842debb;hb=bdb87afb4b425d97f7b5e957cbed1589969d9a24;hp=6d8ff93f5f7bf05f2e94b4e1c522423c8430739c;hpb=144126abf99f2eac48e63b7ea85a8f3f99f814db;p=git.git diff --git a/git-cvsimport.perl b/git-cvsimport.perl index 6d8ff93f5..95c5eec51 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -15,7 +15,7 @@ use strict; use warnings; -use Getopt::Std; +use Getopt::Long; use File::Spec; use File::Temp qw(tempfile tmpnam); use File::Path qw(mkpath); @@ -29,7 +29,7 @@ use IPC::Open2; $SIG{'PIPE'}="IGNORE"; $ENV{'TZ'}="UTC"; -our ($opt_h,$opt_o,$opt_v,$opt_k,$opt_u,$opt_d,$opt_p,$opt_C,$opt_z,$opt_i,$opt_P, $opt_s,$opt_m,$opt_M,$opt_A,$opt_S,$opt_L, $opt_a, $opt_r); +our ($opt_h,$opt_o,$opt_v,$opt_k,$opt_u,$opt_d,$opt_p,$opt_C,$opt_z,$opt_i,$opt_P, $opt_s,$opt_m,@opt_M,$opt_A,$opt_S,$opt_L, $opt_a, $opt_r); my (%conv_author_name, %conv_author_email); sub usage(;$) { @@ -88,7 +88,7 @@ sub write_author_info($) { close ($f); } -# convert getopts specs for use by git-repo-config +# convert getopts specs for use by git config sub read_repo_config { # Split the string between characters, unless there is a ':' # So "abc:de" becomes ["a", "b", "c:", "d", "e"] @@ -96,7 +96,7 @@ sub read_repo_config { foreach my $o (@opts) { my $key = $o; $key =~ s/://g; - my $arg = 'git-repo-config'; + my $arg = 'git config'; $arg .= ' --bool' if ($o !~ /:$/); chomp(my $tmp = `$arg --get cvsimport.$key`); @@ -112,11 +112,16 @@ sub read_repo_config { my $opts = "haivmkuo:d:p:r:C:z:s:M:P:A:S:L:"; read_repo_config($opts); -getopts($opts) or usage(); +Getopt::Long::Configure( 'no_ignore_case', 'bundling' ); + +# turn the Getopt::Std specification in a Getopt::Long one, +# with support for multiple -M options +GetOptions( map { s/:/=s/; /M/ ? "$_\@" : $_ } split( /(?!:)/, $opts ) ) + or usage(); usage if $opt_h; if (@ARGV == 0) { - chomp(my $module = `git-repo-config --get cvsimport.module`); + chomp(my $module = `git config --get cvsimport.module`); push(@ARGV, $module) if $? == 0; } @ARGV <= 1 or usage("You can't specify more than one CVS module"); @@ -164,10 +169,10 @@ if ($#ARGV == 0) { our @mergerx = (); if ($opt_m) { - @mergerx = ( qr/\W(?:from|of|merge|merging|merged) (\w+)/i ); + @mergerx = ( qr/\b(?:from|of|merge|merging|merged) ([-\w]+)/i ); } -if ($opt_M) { - push (@mergerx, qr/$opt_M/); +if (@opt_M) { + push (@mergerx, map { qr/$_/ } @opt_M); } # Remember UTC of our starting time @@ -730,7 +735,7 @@ sub commit { next unless $logmsg =~ $rx && $1; my $mparent = $1 eq 'HEAD' ? $opt_o : $1; if (my $sha1 = get_headref("$remote/$mparent")) { - push @commit_args, '-p', $mparent; + push @commit_args, '-p', "$remote/$mparent"; print "Merge parent branch: $mparent\n" if $opt_v; } }