1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-28 04:49:43 +01:00

Read cvsimport options from repo-config

Default values for command line options can be saved in .git/config (or the
global ~/.gitconfig). Config option names match the command line option names,
so cvsimport.d corresponds to git-cvsimport -d. One may also set
cvsimport.module to specify a default cvs module name.

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
James Bowes 2007-02-07 17:57:43 -05:00 committed by Junio C Hamano
parent d48744d1a8
commit ed35dece27

View file

@ -85,7 +85,35 @@ ($)
close ($f);
}
getopts("haivmkuo:d:p:C:z:s:M:P:A:S:L:") or usage();
# convert getopts specs for use by git-repo-config
sub read_repo_config {
# 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-repo-config';
$arg .= ' --bool' if ($o !~ /:$/);
chomp(my $tmp = `$arg --get cvsimport.$key`);
if ($tmp && !($arg =~ /--bool/ && $tmp eq 'false')) {
no strict 'refs';
my $opt_name = "opt_" . $key;
if (!$$opt_name) {
$$opt_name = $tmp;
}
}
}
if (@ARGV == 0) {
chomp(my $module = `git-repo-config --get cvsimport.module`);
push(@ARGV, $module);
}
}
my $opts = "haivmkuo:d:p:C:z:s:M:P:A:S:L:";
read_repo_config($opts);
getopts($opts) or usage();
usage if $opt_h;
@ARGV <= 1 or usage();