From: Jeff King Date: Fri, 30 Nov 2007 22:22:12 +0000 (-0500) Subject: cvsimport: fix usage of cvsimport.module X-Git-Tag: v1.5.3.7~3 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/67d232426b8858b31e54a9b6a5a90916690d1153?ds=inline;hp=--cc cvsimport: fix usage of cvsimport.module There were two problems: 1. We only look at the config variable if there is no module given on the command line. We checked this by comparing @ARGV == 0. However, at the time of the comparison, we have not yet parsed the dashed options, meaning that "git cvsimport" would read the variable but "git cvsimport -a" would not. This is fixed by simply moving the check after the call to getopt. 2. If the config variable did not exist, we were adding an empty string to @ARGV. The rest of the script, rather than barfing for insufficient input, would then try to import the module '', leading to rather confusing error messages. Based on patch from Emanuele Giaquinta. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- 67d232426b8858b31e54a9b6a5a90916690d1153 diff --git a/git-cvsimport.perl b/git-cvsimport.perl index d29b547d26..d565091c35 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -108,10 +108,6 @@ sub read_repo_config { } } } - if (@ARGV == 0) { - chomp(my $module = `git-repo-config --get cvsimport.module`); - push(@ARGV, $module); - } } my $opts = "haivmkuo:d:p:r:C:z:s:M:P:A:S:L:"; @@ -119,6 +115,10 @@ sub read_repo_config { getopts($opts) or usage(); usage if $opt_h; +if (@ARGV == 0) { + chomp(my $module = `git-repo-config --get cvsimport.module`); + push(@ARGV, $module) if $? == 0; +} @ARGV <= 1 or usage("You can't specify more than one CVS module"); if ($opt_d) { diff --git a/t/t9600-cvsimport.sh b/t/t9600-cvsimport.sh index 3338d447c5..29fee2dd13 100755 --- a/t/t9600-cvsimport.sh +++ b/t/t9600-cvsimport.sh @@ -98,4 +98,25 @@ test_expect_success 'update git module' ' ' +test_expect_success 'update cvs module' ' + + cd module-cvs && + echo 1 >tick && + cvs add tick && + cvs commit -m 1 + cd .. + +' + +test_expect_success 'cvsimport.module config works' ' + + cd module-git && + git config cvsimport.module module && + git cvsimport -a -z0 && + git merge origin && + cd .. && + git diff module-cvs/tick module-git/tick + +' + test_done