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

[PATCH 2/4] Git.pm: Don't require a repository instance for config

From
Frank Lichtenheld <frank@lichtenheld.de>
Date
Mar 14, 2008, 17:29 UTC
Message-ID
<1205515770-3424-3-git-send-email-frank@lichtenheld.de>
In-Reply-To
<1205515770-3424-2-git-send-email-frank@lichtenheld.de>

git config itself doesn't require to be called in a repository, do don't add arbitrary restrictions.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
---
 perl/Git.pm |   33 +++++++++++++--------------------
 1 files changed, 13 insertions(+), 20 deletions(-)
diff --git a/perl/Git.pm b/perl/Git.pm
index a2812ea..67b3749 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -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;
@@ -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 {
@@ -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) {
-- 
1.5.4.4
Previous: Frank LichtenheldNext: Frank Lichtenheld
Message 3 of 6 in “Don't require to be in the repository if we don't need to”
  1. 0/4 Don't require to be in the repository if we don't need toFrank Lichtenheld, Mar 14, 2008
  2. 1/4 var: Don't require to be in a git repository.Frank Lichtenheld, Mar 14, 2008
  3. 2/4 Git.pm: Don't require a repository instance for configFrank Lichtenheld, Mar 14, 2008
  4. 3/4 Git.pm: Don't require repository instance for identFrank Lichtenheld, Mar 14, 2008
  5. 4/4 send-email: Don't require to be called in a repositoryFrank Lichtenheld, Mar 14, 2008
  6. Junio C HamanoMar 16, 2008

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.