git-push: documentation and tests for pushing only branches
[gitweb.git] / perl / Git.pm
index b5b1cf5edcd860e88c461c600d3fa841654fef76..3f4080cbf84e16ab3dd21a82d9948c5646c1c40f 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) {
@@ -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 {