git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Git.pm: config_boolean() -> config_bool()

From
Petr Baudis <pasky@suse.cz>
Date
May 9, 2007, 10:49 UTC
Message-ID
<20070509104941.GK4489@pasky.or.cz>
In-Reply-To
<7v7irxko81.fsf@assigned-by-dhcp.cox.net>
On Sat, Apr 28, 2007 at 08:27:42AM CEST, Junio C Hamano wrote:
Show 8 quoted lines
> Petr Baudis <pasky@suse.cz> writes:
> 
> > This patch renames config_boolean() to config_bool() for consistency with
> > the commandline interface and because it is shorter but still obvious. ;-)
> > It also changes the return value from some obscure string to real Perl
> > boolean, allowing for clean user code.
> 
> Doesn't this break send-email?
Oh, sorry! My grep must've been broken or something.
Show 18 quoted lines
> > @@ -526,14 +528,16 @@ This currently wraps command('config') s
> >  
> >  =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 $var = $self->command_oneline('config', '--bool', '--get',
> >  					      $var);
> > +		return undef unless defined $var;
> > +		return $var eq 'true';
> 
> Did you mean to hide $var in the nested scope?

Hmm, I agree that having a different name for it will be more readable, fixed.

So, I realized that I'm not sure again how to stick a mail reply and new patch version in the same mail - originally I wanted to reply to this mail and send the patch as another reply, but that seemed wasteful. Now it seems that the only option is to stuff the mail reply in the diffstat area, but I refuse to do that since that's just plainly stupid.

---

This patch renames config_boolean() to config_bool() for consistency with the commandline interface and because it is shorter but still obvious. ;-) It also changes the return value from some obscure string to real Perl boolean, allowing for clean user code.

Signed-off-by: Petr Baudis <pasky@suse.cz>
---
 git-remote.perl     |    4 ++--
 git-send-email.perl |    4 ++--
 perl/Git.pm         |   14 +++++++++-----
 3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/git-remote.perl b/git-remote.perl
index 52013fe..5763799 100755
--- a/git-remote.perl
+++ b/git-remote.perl
@@ -297,9 +297,9 @@ sub update_remote {
 	} elsif ($name eq 'default') {
 		undef @remotes;
 		for (sort keys %$remote) {
-			my $do_fetch = $git->config_boolean("remote." . $_ .
+			my $do_fetch = $git->config_bool("remote." . $_ .
 						    ".skipDefaultUpdate");
-			if (!defined($do_fetch) || $do_fetch ne "true") {
+			unless ($do_fetch) {
 				push @remotes, $_;
 			}
 		}
diff --git a/git-send-email.perl b/git-send-email.perl
index a6e3e02..404095f 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -154,8 +154,8 @@ if ($@) {
 	$term = new FakeTerm "$@: going non-interactive";
 }
 
-my $def_chain = $repo->config_boolean('sendemail.chainreplyto');
-if ($def_chain and $def_chain eq 'false') {
+my $def_chain = $repo->config_bool('sendemail.chainreplyto');
+if (defined $def_chain and not $def_chain) {
     $chain_reply_to = 0;
 }
 
diff --git a/perl/Git.pm b/perl/Git.pm
index b5b1cf5..924470a 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -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 @@ This currently wraps command('config') so it is not so fast.
 
 =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',
-					      $var);
+		my $val = $self->command_oneline('config', '--bool', '--get',
+					      $val);
+		return undef unless defined $val;
+		return $val eq 'true';
 	} catch Git::Error::Command with {
 		my $E = shift;
 		if ($E->value() == 1) {
-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Ever try. Ever fail. No matter. // Try again. Fail again. Fail better.
		-- Samuel Beckett
Previous: Junio C HamanoNext: Petr Baudis
Message 10 of 13 in “Git.pm: config_boolean() -> config_bool()”
  1. 1/4 Git.pm: config_boolean() -> config_bool()Petr Baudis, Apr 27, 2007
  2. 2/4 Git.pm: Add remote_refs() git-ls-remote frontendPetr Baudis, Apr 27, 2007
  3. 3/4 [PATCH] git-mirror - exactly mirror another repositoryPetr Baudis, Apr 27, 2007
  4. Shawn O. PearceApr 27, 2007
  5. 4/4 server info: Add HEAD to info/refsPetr Baudis, Apr 27, 2007
  6. Junio C HamanoApr 27, 2007
  7. Petr BaudisApr 27, 2007
  8. Junio C HamanoApr 27, 2007
  9. Junio C HamanoApr 28, 2007
  10. Git.pm: config_boolean() -> config_bool()Petr Baudis, May 9, 2007
  11. Petr BaudisMay 9, 2007
  12. Junio C HamanoMay 10, 2007
  13. Junio C HamanoMay 9, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.