From: =?utf-8?B?w4Z2YXIgQXJuZmrDtnLDsA==?= Bjarmason <avarab@gmail.com>
To: Shoaib Meenai <smeenai@fb.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [BUG] ** glob pattern in git diff doesn't match root directory
Date: Mon, 26 Apr 2021 10:23:07 +0200 [thread overview]
Message-ID: <87k0oq21md.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <79834D18-EAF4-4748-9B96-38AAA0760499@fb.com>
On Sat, Apr 24 2021, Shoaib Meenai wrote:
> Hi all,
>
> When I use a `**/` glob pattern with `git diff`, it doesn't seem to
> match in the root directory. The documentation for gitgnore says that a
> leading `**/` should match in all directories, and I would expect it to
> behave the same way for `git diff`. For example:
>
> $ git --version
> git version 2.31.1.527.g47e6f16901 # built from the `next` branch
> $ mkdir /tmp/globtest && cd /tmp/globtest
> $ git init
> $ echo foo > foo
> $ mkdir sub
> $ echo subfoo > sub/foo
> $ git add .
> $ git commit -m 'Initial commit'
> $ echo bar > foo
> $ echo subbar > sub/foo
> $ git --no-pager diff '**/foo'
> diff --git a/sub/foo b/sub/foo
> index ef7889f..2b2ab6c 100644
> --- a/sub/foo
> +++ b/sub/foo
> @@ -1 +1 @@
> -subfoo
> +subbar
>
> Only the diff to `sub/foo` is printed, whereas I'd expect the change to
> the top-level `foo` to be printed as well. `git diff '**foo'` does behave
> as I would expect. This also happens with a `**` in the middle of a
> pattern; e.g., `sub/**/bar` will match `sub/dir/bar` but not `sub/bar`.
>
> Am I misunderstanding how `**` should work, or is this a bug?
It's not a bug in behavior, but reading the documentation I think it's
buggy in describing how it works.
The behavior of ** here is to match anything, including a slash, but you
yourself are providing the slash with "**/".
This behavior is different under :(glob) where we would match "foo" on
the top-level.
See t/t3070-wildmatch.sh, is particular the "**/foo" test-case.
We adopted this code from rsync originally, I think its manual page is
better at describing how it works, as an aside I see they've since added
a "***" which we won't have, and maybe some other features.
next prev parent reply other threads:[~2021-04-26 8:23 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-24 2:52 [BUG] ** glob pattern in git diff doesn't match root directory Shoaib Meenai
2021-04-24 3:31 ` Felipe Contreras
2021-04-26 8:23 ` =?utf-8?B?w4Z2YXIgQXJuZmrDtnLDsA==?= Bjarmason
2021-04-27 19:58 ` Felipe Contreras
2021-04-26 20:45 ` Shoaib Meenai
2021-04-26 8:23 ` =?utf-8?B?w4Z2YXIgQXJuZmrDtnLDsA==?= Bjarmason [this message]
2021-04-26 20:48 ` Shoaib Meenai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k0oq21md.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=smeenai@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.