# [PATCH] describe: bail of --contains --all is used with --exclude or --match

4 messages from 2019-02-26 to 2026-05-28. Participants: Jacob Keller, Eric Sunshine, Tuomas Ahola.
Thread: https://gitlist.dev/t/50599

## Jacob Keller, 2019-02-26 21:53

Subject: [PATCH] describe: bail of --contains --all is used with --exclude or --match
Message-ID: <20190226215348.5119-1-jacob.e.keller@intel.com>

```
From: Jacob Keller <jacob.keller@gmail.com>

If you try to use git describe --contains with --all, the exclude and
match patterns are silently ignored.

This results in unexpected behavior, as you may try to provide patterns
and expect it to change the result.

Check for this, and have describe die when it encounters this, instead
of silently ignoring the provided options.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
---

I just found this while trying to use it, the patterns weren't being applied
properly.

This is pretty quick/dirty, I haven't had time to write a test, or anything.

 builtin/describe.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/builtin/describe.c b/builtin/describe.c
index 1409cedce2fb..1bf4b6e3d0ae 100644
--- a/builtin/describe.c
+++ b/builtin/describe.c
@@ -589,6 +589,9 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
 				argv_array_pushf(&args, "--refs=refs/tags/%s", item->string);
 			for_each_string_list_item(item, &exclude_patterns)
 				argv_array_pushf(&args, "--exclude=refs/tags/%s", item->string);
+		} else {
+			if (patterns.nr || exclude_patterns.nr)
+				die(_("--contains with --all does not support --match or --exclude"));
 		}
 		if (argc)
 			argv_array_pushv(&args, argv);
-- 
2.18.0.219.gaf81d287a9da


```

## Eric Sunshine, 2019-02-26 23:34

Subject: Re: [PATCH] describe: bail of --contains --all is used with --exclude or --match
Message-ID: <CAPig+cR8n05zvzxFnbyGm08hEHTTTozzGY1DTE1SvDxsuPPTfw@mail.gmail.com>
In-Reply-To: <20190226215348.5119-1-jacob.e.keller@intel.com>

```
On Tue, Feb 26, 2019 at 4:54 PM Jacob Keller <jacob.e.keller@intel.com> wrote:
> describe: bail of --contains --all is used with --exclude or --match

s/of/if/

> Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
> ---
> diff --git a/builtin/describe.c b/builtin/describe.c
> @@ -589,6 +589,9 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
>                         for_each_string_list_item(item, &exclude_patterns)
>                                 argv_array_pushf(&args, "--exclude=refs/tags/%s", item->string);
> +               } else {
> +                       if (patterns.nr || exclude_patterns.nr)
> +                               die(_("--contains with --all does not support --match or --exclude"));
>                 }

Could be folded into an 'else if':

    } else if (patterns.nr || exclude_patterns.nr) {
        die(...);
    }

but not worth a re-roll.

```

## Tuomas Ahola, 2026-05-19 08:35

Subject: Re: [PATCH] describe: bail of --contains --all is used with --exclude or --match
Message-ID: <20260519083559.onq6r%taahol@utu.fi>
In-Reply-To: <20190226215348.5119-1-jacob.e.keller@intel.com>

```
Jacob Keller <jacob.e.keller@intel.com> wrote:

> From: Jacob Keller <jacob.keller@gmail.com>
> 
> If you try to use git describe --contains with --all, the exclude and
> match patterns are silently ignored.
> 
> This results in unexpected behavior, as you may try to provide patterns
> and expect it to change the result.
> 

I got just bitten by that, and yes, it was quite unexpected.

> Check for this, and have describe die when it encounters this, instead
> of silently ignoring the provided options.
> 
> Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
> ---
> 
> I just found this while trying to use it, the patterns weren't being applied
> properly.
> 
> This is pretty quick/dirty, I haven't had time to write a test, or anything.
> 

Would you like to resurrect the patch?  It seems it was never merged,
nor the underlying problem fixed:

ˋˋˋ
$ git describe --contains --all --match=bogus
master
$ git describe --contains --all --exclude="*"
master
ˋˋˋ

>  builtin/describe.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
>  [...]


--Tuomas

```

## Jacob Keller, 2026-05-28 00:43

Subject: Re: [PATCH] describe: bail of --contains --all is used with --exclude or --match
Message-ID: <CA+P7+xr0tP6Ft3qPwbkxNRgNB2a24_WFC+8DymFnm11Ks=sf5g@mail.gmail.com>
In-Reply-To: <20260519083559.onq6r%taahol@utu.fi>

```
On Tue, May 19, 2026 at 1:36 AM Tuomas Ahola <taahol@utu.fi> wrote:
>
> Jacob Keller <jacob.e.keller@intel.com> wrote:
>
> > From: Jacob Keller <jacob.keller@gmail.com>
> >
> > If you try to use git describe --contains with --all, the exclude and
> > match patterns are silently ignored.
> >
> > This results in unexpected behavior, as you may try to provide patterns
> > and expect it to change the result.
> >
>
> I got just bitten by that, and yes, it was quite unexpected.
>
> > Check for this, and have describe die when it encounters this, instead
> > of silently ignoring the provided options.
> >
> > Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
> > ---
> >
> > I just found this while trying to use it, the patterns weren't being applied
> > properly.
> >
> > This is pretty quick/dirty, I haven't had time to write a test, or anything.
> >
>
> Would you like to resurrect the patch?  It seems it was never merged,
> nor the underlying problem fixed:
>
> ˋˋˋ
> $ git describe --contains --all --match=bogus
> master
> $ git describe --contains --all --exclude="*"
> master
> ˋˋˋ
>

Apologies for a delayed response. I'll try to look into reviving this tomorrow.

```
