# [PATCH] git-config: respect other options after -l, most notably --file

4 messages from 2007-10-09 to 2007-10-12. Participants: Gerrit Pape, Johannes Schindelin, Frank Lichtenheld.
Thread: https://gitlist.dev/t/10211

## Gerrit Pape, 2007-10-09 12:50

Subject: [PATCH] git-config: respect other options after -l, most notably --file
Message-ID: <20071009125024.1259.qmail@d8e601127fe8d0.315fe32.mid.smarden.org>
URL: https://gitlist.dev/e/20071009125024.1259.qmail%40d8e601127fe8d0.315fe32.mid.smarden.org

```
When git-commit is seeing the -l|--list option, it stops reading the
following command line options.  So although they should be the same,
the following commands act differently:

 git config --file ../repo2/.git/config -l
 git config -l --file ../repo2/.git/config

This patch delays the 'list all variables' to after the command line
options have been processed.

The problem was noticed by Joey Hess, reported through
 http://bugs.debian.org/445208

Signed-off-by: Gerrit Pape <pape@smarden.org>
---
 builtin-config.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/builtin-config.c b/builtin-config.c
index c2708ba..1bb0ebb 100644
--- a/builtin-config.c
+++ b/builtin-config.c
@@ -8,6 +8,7 @@ static char *key;
 static regex_t *key_regexp;
 static regex_t *regexp;
 static int show_keys;
+static int show_all;
 static int use_key_regexp;
 static int do_all;
 static int do_not_match;
@@ -173,7 +174,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 		else if (!strcmp(argv[1], "--bool"))
 			type = T_BOOL;
 		else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l"))
-			return git_config(show_all_config);
+			show_all = 1;
 		else if (!strcmp(argv[1], "--global")) {
 			char *home = getenv("HOME");
 			if (home) {
@@ -234,6 +235,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
 		argv++;
 	}
 
+	if (show_all)
+		return git_config(show_all_config);
 	switch (argc) {
 	case 2:
 		return get_value(argv[1], NULL);
-- 
1.5.3.4

```

## Johannes Schindelin, 2007-10-09 13:15

Subject: Re: [PATCH] git-config: respect other options after -l, most notably --file
Message-ID: <Pine.LNX.4.64.0710091414590.4174@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0710091414590.4174%40racer.site
In-Reply-To: <20071009125024.1259.qmail@d8e601127fe8d0.315fe32.mid.smarden.org>

```
Hi,

On Tue, 9 Oct 2007, Gerrit Pape wrote:

> @@ -234,6 +235,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
>  		argv++;
>  	}
>  
> +	if (show_all)
> +		return git_config(show_all_config);
>  	switch (argc) {
>  	case 2:
>  		return get_value(argv[1], NULL);

Shouldn't this somehow check if argc == 1 when show_all is set, and die 
otherwise?

Ciao,
Dscho

```

## Frank Lichtenheld, 2007-10-09 22:49

Subject: Re: [PATCH] git-config: respect other options after -l, most notably --file
Message-ID: <20071009224943.GH31659@planck.djpig.de>
URL: https://gitlist.dev/e/20071009224943.GH31659%40planck.djpig.de
In-Reply-To: <20071009125024.1259.qmail@d8e601127fe8d0.315fe32.mid.smarden.org>

```
On Tue, Oct 09, 2007 at 12:50:24PM +0000, Gerrit Pape wrote:
> When git-commit is seeing the -l|--list option, it stops reading the
> following command line options.  So although they should be the same,
> the following commands act differently:
> 
>  git config --file ../repo2/.git/config -l
>  git config -l --file ../repo2/.git/config
> 
> This patch delays the 'list all variables' to after the command line
> options have been processed.

Note that I have posted a conflicting patch for the same problem some
days ago. I think my patch is more consistent with the behaviour for
other options.

Gruesse,
-- 
Frank Lichtenheld <frank@lichtenheld.de>
www: http://www.djpig.de/

```

## Gerrit Pape, 2007-10-12 11:37

Subject: [PATCH drop] git-config: respect other options after -l, most notably --file
Message-ID: <20071012113741.30469.qmail@a4342ff4e2e64a.315fe32.mid.smarden.org>
URL: https://gitlist.dev/e/20071012113741.30469.qmail%40a4342ff4e2e64a.315fe32.mid.smarden.org
In-Reply-To: <20071009224943.GH31659@planck.djpig.de>

```
On Wed, Oct 10, 2007 at 12:49:43AM +0200, Frank Lichtenheld wrote:
> On Tue, Oct 09, 2007 at 12:50:24PM +0000, Gerrit Pape wrote:
> > When git-commit is seeing the -l|--list option, it stops reading the
> > following command line options.  So although they should be the same,
> > the following commands act differently:
> > 
> >  git config --file ../repo2/.git/config -l
> >  git config -l --file ../repo2/.git/config
> > 
> > This patch delays the 'list all variables' to after the command line
> > options have been processed.
> 
> Note that I have posted a conflicting patch for the same problem some
> days ago. I think my patch is more consistent with the behaviour for
> other options.

Fair enough.  Regards, Gerrit.

```
