Git.pm: Add config() method
This accessor will retrieve value(s) of the given configuration variable. Signed-off-by: Petr Baudis <pasky@suse.cz> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
6fcca938b0
commit
dc2613de86
@ -54,7 +54,8 @@ OPTIONS
|
||||
|
||||
--get::
|
||||
Get the value for a given key (optionally filtered by a regex
|
||||
matching the value).
|
||||
matching the value). Returns error code 1 if the key was not
|
||||
found and error code 2 if multiple key values were found.
|
||||
|
||||
--get-all::
|
||||
Like get, but does not fail if the number of values for the key
|
||||
|
37
perl/Git.pm
37
perl/Git.pm
@ -473,7 +473,6 @@ and the directory must exist.
|
||||
|
||||
sub wc_chdir {
|
||||
my ($self, $subdir) = @_;
|
||||
|
||||
$self->wc_path()
|
||||
or throw Error::Simple("bare repository");
|
||||
|
||||
@ -486,6 +485,42 @@ sub wc_chdir {
|
||||
}
|
||||
|
||||
|
||||
=item config ( VARIABLE )
|
||||
|
||||
Retrieve the configuration C<VARIABLE> in the same manner as C<repo-config>
|
||||
does. In scalar context requires the variable to be set only one time
|
||||
(exception is thrown otherwise), in array context returns allows the
|
||||
variable to be set multiple times and returns all the values.
|
||||
|
||||
Must be called on a repository instance.
|
||||
|
||||
This currently wraps command('repo-config') so it is not so fast.
|
||||
|
||||
=cut
|
||||
|
||||
sub config {
|
||||
my ($self, $var) = @_;
|
||||
$self->repo_path()
|
||||
or throw Error::Simple("not a repository");
|
||||
|
||||
try {
|
||||
if (wantarray) {
|
||||
return $self->command('repo-config', '--get-all', $var);
|
||||
} else {
|
||||
return $self->command_oneline('repo-config', '--get', $var);
|
||||
}
|
||||
} catch Git::Error::Command with {
|
||||
my $E = shift;
|
||||
if ($E->value() == 1) {
|
||||
# Key not found.
|
||||
return undef;
|
||||
} else {
|
||||
throw $E;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
=item hash_object ( TYPE, FILENAME )
|
||||
|
||||
=item hash_object ( TYPE, FILEHANDLE )
|
||||
|
@ -118,7 +118,7 @@ static int get_value(const char* key_, const char* regex_)
|
||||
if (do_all)
|
||||
ret = !seen;
|
||||
else
|
||||
ret = (seen == 1) ? 0 : 1;
|
||||
ret = (seen == 1) ? 0 : seen > 1 ? 2 : 1;
|
||||
|
||||
free_strings:
|
||||
if (repo_config)
|
||||
|
Loading…
Reference in New Issue
Block a user