Re: [PATCH] describe: fix --exclude, --match with --contains and --all
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 30, 2026, 23:47 UTC
- Message-ID
- <xmqqo6hwcves.fsf@gitster.g>
- In-Reply-To
- <20260528232950.187002-2-jacob.e.keller@intel.com>
Jacob Keller <jacob.e.keller@intel.com> writes:
Show 33 quoted lines
> From: Jacob Keller <jacob.keller@gmail.com> > > git describe --contains acts as a wrapper around git name-rev. When > operating with --contains and --all, the --match and --exclude patterns > are not properly forwarded to name-rev as --exclude and --refs options. > > This results in the command silently discarding match and exclude > requests from the user when operating in --all mode. > > We could check and die() if the user provides --contains, --all, and > --match/--exclude. However, its also straight forward to just pass the > filters down to git name-rev. > > Notice that the documentation for --match and --exclude mention the > --all mode. It explains that they operate on refs with the prefix > refs/tags, and additionally refs/heads and refs/remotes when using > --all. > > Fix the describe logic to pass the patterns down with the appropriate > prefixes when --all is provided. This fixes the support to match the > documented behavior. > > Add tests to check that this works as expected. > > Reported-by: Tuomas Ahola <taahol@utu.fi> > Signed-off-by: Jacob Keller <jacob.keller@gmail.com> > --- > > I was looking into reviving the patch that just added a simple die() and > realized that its actually pretty straight forward to just fix the support > instead. I'm open to either route, if we think this support isn't > necessary... I'm not sure if there are any gotchas or other issues with how > I implemented this.
It is curious that this fails in some but not all CI jobs, and even more curious that these failures look the same.
e.g., https://github.com/git/git/actions/runs/26671595367/job/78615760984#step:4:1984
+++ diff -u expect actual --- expect 2026-05-30 02:21:23 +++ actual 2026-05-30 02:21:23 @@ -1 +1 @@ -branch_A +remotes/origin/remote_branch_A error: last command exited with $?=1 not ok 70 - describe --contains --all --exclude # # echo "branch_A" >expect && # tagged_commit=$(git rev-parse "refs/tags/A^0") && # git describe --contains --all --exclude="A" --exclude="c" --exclude="test*" $tagged_commit >actual && # test_cmp expect actual
Rings any bell?