Re: [PATCH 05/24] dir.c: remove an implicit dependency on the_index in pathspec code
- From
- Brandon Williams <bmwill@google.com>
- Date
- Aug 13, 2018, 17:17 UTC
- Message-ID
- <20180813171718.GB240194@google.com>
- In-Reply-To
- <20180813161441.16824-6-pclouds@gmail.com>
On 08/13, Nguyễn Thái Ngọc Duy wrote:
Show 37 quoted lines
> diff --git a/dir.c b/dir.c
> index 29fbbd48c8..e25aed013b 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -276,12 +276,13 @@ static int do_read_blob(const struct object_id *oid, struct oid_stat *oid_stat,
> #define DO_MATCH_DIRECTORY (1<<1)
> #define DO_MATCH_SUBMODULE (1<<2)
>
> -static int match_attrs(const char *name, int namelen,
> +static int match_attrs(const struct index_state *istate,
> + const char *name, int namelen,
> const struct pathspec_item *item)
> {
> int i;
>
> - git_check_attr(&the_index, name, item->attr_check);
> + git_check_attr(istate, name, item->attr_check);
> for (i = 0; i < item->attr_match_nr; i++) {
> const char *value;
> int matched;
> @@ -318,7 +319,8 @@ static int match_attrs(const char *name, int namelen,
> *
> * It returns 0 when there is no match.
> */
> -static int match_pathspec_item(const struct pathspec_item *item, int prefix,
> +static int match_pathspec_item(const struct index_state *istate,
> + const struct pathspec_item *item, int prefix,
> const char *name, int namelen, unsigned flags)
> {
> /* name/namelen has prefix cut off by caller */
> @@ -358,7 +360,7 @@ static int match_pathspec_item(const struct pathspec_item *item, int prefix,
> strncmp(item->match, name - prefix, item->prefix))
> return 0;
>
> - if (item->attr_match_nr && !match_attrs(name, namelen, item))
> + if (item->attr_match_nr && !match_attrs(istate, name, namelen, item))
> return 0;Yuck, all of this just because I added the ability to match against attrs with pathspecs. Part of me wonders if it would be better to put a pointer to the needed istate in the pathspec struct...but then I can think of a ton of reasons why that wouldn't be good either.
So yes I think this is probably the right approach, I'm just sorry I made it this messy :/
-- Brandon Williams