Skip to content

Commit

Permalink
Merge branch 'mg/cvsimport'
Browse files Browse the repository at this point in the history
* mg/cvsimport:
  cvsimport: handle the parsing of uppercase config options
  cvsimport: partial whitespace cleanup
  • Loading branch information
Junio C Hamano committed Jan 5, 2011
2 parents f2665ec + 60d5985 commit 0c30ed0
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
35 changes: 26 additions & 9 deletions git-cvsimport.perl
Original file line number Diff line number Diff line change
Expand Up @@ -90,23 +90,40 @@ ($)
}

# convert getopts specs for use by git config
my %longmap = (
'A:' => 'authors-file',
'M:' => 'merge-regex',
'P:' => undef,
'R' => 'track-revisions',
'S:' => 'ignore-paths',
);

sub read_repo_config {
# Split the string between characters, unless there is a ':'
# So "abc:de" becomes ["a", "b", "c:", "d", "e"]
# Split the string between characters, unless there is a ':'
# So "abc:de" becomes ["a", "b", "c:", "d", "e"]
my @opts = split(/ *(?!:)/, shift);
foreach my $o (@opts) {
my $key = $o;
$key =~ s/://g;
my $arg = 'git config';
$arg .= ' --bool' if ($o !~ /:$/);

chomp(my $tmp = `$arg --get cvsimport.$key`);
my $ckey = $key;

if (exists $longmap{$o}) {
# An uppercase option like -R cannot be
# expressed in the configuration, as the
# variable names are downcased.
$ckey = $longmap{$o};
next if (! defined $ckey);
$ckey =~ s/-//g;
}
chomp(my $tmp = `$arg --get cvsimport.$ckey`);
if ($tmp && !($arg =~ /--bool/ && $tmp eq 'false')) {
no strict 'refs';
my $opt_name = "opt_" . $key;
if (!$$opt_name) {
$$opt_name = $tmp;
}
no strict 'refs';
my $opt_name = "opt_" . $key;
if (!$$opt_name) {
$$opt_name = $tmp;
}
}
}
}
Expand Down
7 changes: 5 additions & 2 deletions t/t9600-cvsimport.sh
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ EOF
test_expect_success PERL 'update git module' '
(cd module-git &&
git cvsimport -a -R -z 0 module &&
git config cvsimport.trackRevisions true &&
git cvsimport -a -z 0 module &&
git merge origin
) &&
test_cmp module-cvs/o_fortuna module-git/o_fortuna
Expand Down Expand Up @@ -117,7 +118,8 @@ test_expect_success PERL 'cvsimport.module config works' '
(cd module-git &&
git config cvsimport.module module &&
git cvsimport -a -R -z0 &&
git config cvsimport.trackRevisions true &&
git cvsimport -a -z0 &&
git merge origin
) &&
test_cmp module-cvs/tick module-git/tick
Expand All @@ -137,6 +139,7 @@ test_expect_success PERL 'import from a CVS working tree' '
$CVS co -d import-from-wt module &&
(cd import-from-wt &&
git config cvsimport.trackRevisions false &&
git cvsimport -a -z0 &&
echo 1 >expect &&
git log -1 --pretty=format:%s%n >actual &&
Expand Down

0 comments on commit 0c30ed0

Please sign in to comment.