From: Bagas Sanjaya <bagasdotme@gmail.com>
To: "Σταύρος Ντέντος" <stdedos@gmail.com>
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
git@vger.kernel.org
Subject: Re: [PATCH v1 1/1] pathspec: warn for a no-glob entry that contains `**`
Date: Thu, 25 Mar 2021 18:04:10 +0700 [thread overview]
Message-ID: <af50b7e9-3594-ac46-ed1b-23f3143fe11e@gmail.com> (raw)
In-Reply-To: <20210325102228.14901-2-stdedos@gmail.com>
On 25/03/21 17.22, Σταύρος Ντέντος wrote:
> From: Stavros Ntentos <133706+stdedos@users.noreply.github.com>
>
> If a pathspec is given that contains `**`, chances are that someone is
> naively expecting that it will do what the manual has told him that `**`
> will match (i.e. 0-or-more directories).
>
> However, without an explicit `:(glob)` magic, that will fall out the sky:
> the two `**` will merge into one star, which surrounded by slashes, will
> match any directory name.
>
> These changes attempt to bring awareness to this issue.
>
> Signed-off-by: Stavros Ntentos <133706+stdedos@users.noreply.github.com>
> ---
> pathspec.c | 13 +++++++++++++
> pathspec.h | 1 +
> t/t6130-pathspec-noglob.sh | 13 +++++++++++++
> 3 files changed, 27 insertions(+)
>
> diff --git a/pathspec.c b/pathspec.c
> index 7a229d8d22..9b5066d9d9 100644
> --- a/pathspec.c
> +++ b/pathspec.c
> @@ -1,3 +1,4 @@
> +#include <string.h>
> #include "cache.h"
> #include "config.h"
> #include "dir.h"
> @@ -588,6 +589,8 @@ void parse_pathspec(struct pathspec *pathspec,
>
> init_pathspec_item(item + i, flags, prefix, prefixlen, entry);
>
> + check_missing_glob(entry, item[i].magic);
> +
> if (item[i].magic & PATHSPEC_EXCLUDE)
> nr_exclude++;
> if (item[i].magic & magic_mask)
> @@ -739,3 +742,13 @@ int match_pathspec_attrs(const struct index_state *istate,
>
> return 1;
> }
> +
> +void check_missing_glob(const char *entry, int flags) {
> + if (flags & (PATHSPEC_GLOB | PATHSPEC_LITERAL)) {
> + return;
> + }
> +
> + if (strstr(entry, "**")) {
> + warning(_("Pathspec provided contains `**`, but no :(glob) magic.\n\tIt will not match 0 or more directories!"));
> + }
Why an extra \t? Unnecessary indentation?
> +}
> diff --git a/pathspec.h b/pathspec.h
> index 454ce364fa..913518ebd3 100644
> --- a/pathspec.h
> +++ b/pathspec.h
> @@ -157,5 +157,6 @@ char *find_pathspecs_matching_against_index(const struct pathspec *pathspec,
> int match_pathspec_attrs(const struct index_state *istate,
> const char *name, int namelen,
> const struct pathspec_item *item);
> +void check_missing_glob(const char* pathspec_entry, int flags);
>
> #endif /* PATHSPEC_H */
> diff --git a/t/t6130-pathspec-noglob.sh b/t/t6130-pathspec-noglob.sh
> index ba7902c9cd..1cd5efef5a 100755
> --- a/t/t6130-pathspec-noglob.sh
> +++ b/t/t6130-pathspec-noglob.sh
> @@ -157,4 +157,17 @@ test_expect_success '**/ does not work with :(literal) and --glob-pathspecs' '
> test_must_be_empty actual
> '
>
> +cat > expected <<"EOF"
> +warning: Pathspec provided contains `**`, but no glob magic.
> +EOF
> +test_expect_success '** without :(glob) warns of lacking glob magic' '
> + test_might_fail git stash -- "**/bar" 2>warns &&
> + grep -Ff expected warns
> +'
> +
> +test_expect_success '** with :(literal) does not warn of lacking glob magic' '
Padding with without test above?
> + test_might_fail git stash -- ":(literal)**/bar" 2>warns &&
> + ! grep -Ff expected warns
> +'
> +
> test_done
>
--
An old man doll... just what I always wanted! - Clara
next prev parent reply other threads:[~2021-03-25 11:04 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-26 20:44 Pathspec does not accept / does not warn for specific pathspecs Σταύρος Ντέντος
2021-02-26 23:27 ` Junio C Hamano
2021-03-25 10:22 ` [PATCH v1 0/1] pathspec: warn for a no-glob entry that contains `**` Σταύρος Ντέντος
2021-03-25 10:22 ` [PATCH v1 1/1] " Σταύρος Ντέντος
2021-03-25 11:00 ` Bagas Sanjaya
2021-03-25 11:04 ` Bagas Sanjaya [this message]
2021-03-25 16:09 ` Stavros Ntentos
2021-03-25 20:09 ` Junio C Hamano
2021-03-25 23:36 ` [PATCH v2 0/1] " Σταύρος Ντέντος
2021-03-25 23:36 ` [PATCH v2 1/1] " Σταύρος Ντέντος
2021-03-26 0:41 ` Junio C Hamano
2021-03-26 1:32 ` Eric Sunshine
2021-03-26 3:02 ` Junio C Hamano
2021-03-26 5:13 ` Jeff King
2021-03-26 15:43 ` Stavros Ntentos
2021-03-26 15:48 ` [PATCH v3 1/2] " Stavros Ntentos
2021-03-26 15:48 ` [PATCH v3 2/2] pathspec: convert no-glob warn to advice Stavros Ntentos
2021-03-26 2:40 ` [RFC PATCH v1 0/1] pathspec: warn: long and short forms are incompatible Σταύρος Ντέντος
2021-03-26 2:40 ` [RFC PATCH v1 1/2] " Σταύρος Ντέντος
2021-03-26 5:28 ` Jeff King
2021-03-26 16:16 ` Stavros Ntentos
2021-03-27 9:41 ` Jeff King
2021-03-27 18:36 ` Junio C Hamano
2021-03-28 15:44 ` Stavros Ntentos
2021-03-26 2:40 ` [RFC PATCH v1 2/2] fixup! " Σταύρος Ντέντος
2021-03-26 8:14 ` Bagas Sanjaya
2021-03-26 15:55 ` Stavros Ntentos
2021-03-28 15:26 ` [RFC PATCH v1 3/3] squash! " Stavros Ntentos
2021-03-26 2:44 ` [RFC PATCH v1 0/1] " Σταύρος Ντέντος
2021-03-26 2:44 ` [RFC PATCH v1] " Σταύρος Ντέντος
2021-04-03 12:26 ` [PATCH v3] pathspec: advice: " Stavros Ntentos
2021-04-04 7:19 ` Junio C Hamano
2021-04-11 15:07 ` Σταύρος Ντέντος
2021-04-11 19:10 ` Junio C Hamano
2021-04-11 20:53 ` Σταύρος Ντέντος
2021-03-28 15:45 ` [PATCH v2] " Stavros Ntentos
2021-03-28 19:12 ` Junio C Hamano
2021-03-30 17:37 ` Junio C Hamano
2021-03-30 19:05 ` Stavros Ntentos
2021-03-30 19:17 ` Stavros Ntentos
2021-03-30 20:36 ` Junio C Hamano
2021-04-03 12:48 ` [PATCH v3] " Stavros Ntentos
2021-04-03 12:51 ` [PATCH v4] " Stavros Ntentos
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=af50b7e9-3594-ac46-ed1b-23f3143fe11e@gmail.com \
--to=bagasdotme@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=stdedos@gmail.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).