Skip to content

Commit

Permalink
Git.pm: Don't require a repository instance for config
Browse files Browse the repository at this point in the history
git config itself doesn't require to be called in a repository,
so don't add arbitrary restrictions.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Frank Lichtenheld authored and Junio C Hamano committed Mar 15, 2008
1 parent 2fba836 commit c2e357c
Showing 1 changed file with 13 additions and 20 deletions.
33 changes: 13 additions & 20 deletions perl/Git.pm
Original file line number Diff line number Diff line change
Expand Up @@ -487,22 +487,20 @@ 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('config') so it is not so fast.
=cut

sub config {
my ($self, $var) = @_;
$self->repo_path()
or throw Error::Simple("not a repository");
my ($self, $var) = _maybe_self(@_);

try {
my @cmd = ('config');
unshift @cmd, $self if $self;
if (wantarray) {
return $self->command('config', '--get-all', $var);
return command(@cmd, '--get-all', $var);
} else {
return $self->command_oneline('config', '--get', $var);
return command_oneline(@cmd, '--get', $var);
}
} catch Git::Error::Command with {
my $E = shift;
Expand All @@ -522,20 +520,17 @@ Retrieve the bool configuration C<VARIABLE>. The return value
is usable as a boolean in perl (and C<undef> if it's not defined,
of course).
Must be called on a repository instance.
This currently wraps command('config') so it is not so fast.
=cut

sub config_bool {
my ($self, $var) = @_;
$self->repo_path()
or throw Error::Simple("not a repository");
my ($self, $var) = _maybe_self(@_);

try {
my $val = $self->command_oneline('config', '--bool', '--get',
$var);
my @cmd = ('config', '--bool', '--get', $var);
unshift @cmd, $self if $self;
my $val = command_oneline(@cmd);
return undef unless defined $val;
return $val eq 'true';
} catch Git::Error::Command with {
Expand All @@ -557,19 +552,17 @@ or 'g' in the config file will cause the value to be multiplied
by 1024, 1048576 (1024^2), or 1073741824 (1024^3) prior to output.
It would return C<undef> if configuration variable is not defined,
Must be called on a repository instance.
This currently wraps command('config') so it is not so fast.
=cut

sub config_int {
my ($self, $var) = @_;
$self->repo_path()
or throw Error::Simple("not a repository");
my ($self, $var) = _maybe_self(@_);

try {
return $self->command_oneline('config', '--int', '--get', $var);
my @cmd = ('config', '--int', '--get', $var);
unshift @cmd, $self if $self;
return command_oneline(@cmd);
} catch Git::Error::Command with {
my $E = shift;
if ($E->value() == 1) {
Expand Down

0 comments on commit c2e357c

Please sign in to comment.