git-fetch: Always fetch tags if the object they reference exists
[gitweb.git] / perl / Git.pm
index b5b1cf5edcd860e88c461c600d3fa841654fef76..dca92c8adb52e212ef96410d3efd4deaa28e385f 100644 (file)
@@ -516,9 +516,11 @@ sub config {
 }
 
 
-=item config_boolean ( VARIABLE )
+=item config_bool ( VARIABLE )
 
-Retrieve the boolean configuration C<VARIABLE>.
+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.
 
@@ -526,14 +528,16 @@ sub config {
 
 =cut
 
-sub config_boolean {
+sub config_bool {
        my ($self, $var) = @_;
        $self->repo_path()
                or throw Error::Simple("not a repository");
 
        try {
-               return $self->command_oneline('config', '--bool', '--get',
+               my $val = $self->command_oneline('config', '--bool', '--get',
                                              $var);
+               return undef unless defined $val;
+               return $val eq 'true';
        } catch Git::Error::Command with {
                my $E = shift;
                if ($E->value() == 1) {
@@ -808,7 +812,7 @@ sub _cmd_exec {
                $self->wc_subdir() and chdir($self->wc_subdir());
        }
        _execv_git_cmd(@args);
-       die "exec failed: $!";
+       die qq[exec "@args" failed: $!];
 }
 
 # Execute the given Git command ($_[0]) with arguments ($_[1..])
@@ -856,7 +860,13 @@ sub READLINE {
        if ($self->{i} >= scalar @{$self->{data}}) {
                return undef;
        }
-       return $self->{'data'}->[ $self->{i}++ ];
+       my $i = $self->{i};
+       if (wantarray) {
+               $self->{i} = $#{$self->{'data'}} + 1;
+               return splice(@{$self->{'data'}}, $i);
+       }
+       $self->{i} = $i + 1;
+       return $self->{'data'}->[ $i ];
 }
 
 sub CLOSE {