From: Brandon Williams <bmwill@google.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, sbeller@google.com, jonathantanmy@google.com
Subject: Re: [PATCH v4 4/6] grep: optionally recurse into submodules
Date: Fri, 18 Nov 2016 14:58:40 -0800 [thread overview]
Message-ID: <20161118225840.GC76630@google.com> (raw)
In-Reply-To: <xmqqlgwgl9ke.fsf@gitster.mtv.corp.google.com>
On 11/18, Junio C Hamano wrote:
> Brandon Williams <bmwill@google.com> writes:
>
> > +static int grep_cache(struct grep_opt *opt, const struct pathspec *pathspec,
> > + int cached)
> > {
> > int hit = 0;
> > int nr;
> > + struct strbuf name = STRBUF_INIT;
> > + int name_base_len = 0;
> > + if (super_prefix) {
> > + name_base_len = strlen(super_prefix);
> > + strbuf_addstr(&name, super_prefix);
> > + }
> > +
> > read_cache();
> >
> > for (nr = 0; nr < active_nr; nr++) {
> > const struct cache_entry *ce = active_cache[nr];
> > - if (!S_ISREG(ce->ce_mode))
> > - continue;
> > - if (!ce_path_match(ce, pathspec, NULL))
> > - continue;
> > - /*
> > - * If CE_VALID is on, we assume worktree file and its cache entry
> > - * are identical, even if worktree file has been modified, so use
> > - * cache version instead
> > - */
> > - if (cached || (ce->ce_flags & CE_VALID) || ce_skip_worktree(ce)) {
> > - if (ce_stage(ce) || ce_intent_to_add(ce))
> > - continue;
> > - hit |= grep_sha1(opt, ce->oid.hash, ce->name, 0,
> > - ce->name);
> > + strbuf_setlen(&name, name_base_len);
> > + strbuf_addstr(&name, ce->name);
> > +
> > + if (S_ISREG(ce->ce_mode) &&
> > + match_pathspec(pathspec, name.buf, name.len, 0, NULL,
> > + S_ISDIR(ce->ce_mode) ||
> > + S_ISGITLINK(ce->ce_mode))) {
> > + /*
> > + * If CE_VALID is on, we assume worktree file and its
> > + * cache entry are identical, even if worktree file has
> > + * been modified, so use cache version instead
> > + */
> > + if (cached || (ce->ce_flags & CE_VALID) ||
> > + ce_skip_worktree(ce)) {
> > + if (ce_stage(ce) || ce_intent_to_add(ce))
> > + continue;
> > + hit |= grep_sha1(opt, ce->oid.hash, ce->name,
> > + 0, ce->name);
> > + } else {
> > + hit |= grep_file(opt, ce->name);
> > + }
> > + } else if (recurse_submodules && S_ISGITLINK(ce->ce_mode) &&
> > + submodule_path_match(pathspec, name.buf, NULL)) {
> > + hit |= grep_submodule(opt, NULL, ce->name, ce->name);
> > }
> > - else
> > - hit |= grep_file(opt, ce->name);
>
> We used to reject anything other than S_ISREG() upfront in the loop,
> and then either did grep_sha1() from the cache or from grep_file()
> from the working tree.
>
> Now, the guard upfront is removed, and we do the same in the first
> part of this if/elseif. The elseif part deals with a submodule that
> could match the pathspec.
>
> Don't we need a final else clause that would skip the remainder of
> this loop? What would happen to a S_ISREG() path that does *NOT*
> match the given pathspec? We used to just "continue", but it seems
> to me that such a path will fall through the above if/elseif in the
> new code. Would that be a problem?
It may be (Though I didn't see any issues when running tests). It would
be easy enough to add an 'else continue;' at the end though.
--
Brandon Williams
next prev parent reply other threads:[~2016-11-18 22:58 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 22:38 [RFC PATCH 0/5] recursively grep across submodules Brandon Williams
2016-10-27 22:38 ` [PATCH 1/5] submodules: add helper functions to determine presence of submodules Brandon Williams
2016-10-27 22:38 ` [PATCH 2/5] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-10-27 22:38 ` [PATCH 3/5] grep: add submodules as a grep source type Brandon Williams
2016-10-27 22:38 ` [PATCH 4/5] grep: optionally recurse into submodules Brandon Williams
2016-11-05 5:09 ` Jonathan Tan
2016-10-27 22:38 ` [PATCH 5/5] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-10-28 19:35 ` Brandon Williams
2016-10-27 23:26 ` [RFC PATCH 0/5] recursively grep across submodules Junio C Hamano
2016-10-28 0:59 ` Stefan Beller
2016-10-28 2:50 ` Junio C Hamano
2016-10-28 3:46 ` Stefan Beller
2016-10-28 15:06 ` Philip Oakley
2016-10-28 17:02 ` Brandon Williams
2016-10-28 17:21 ` Junio C Hamano
2016-10-31 22:38 ` [PATCH v2 0/6] " Brandon Williams
2016-10-31 22:38 ` [PATCH v2 1/6] submodules: add helper functions to determine presence of submodules Brandon Williams
2016-10-31 23:34 ` Stefan Beller
2016-11-01 17:20 ` Junio C Hamano
2016-11-01 17:24 ` Brandon Williams
2016-11-01 17:31 ` Stefan Beller
2016-11-06 7:42 ` Jacob Keller
2016-11-01 17:23 ` Brandon Williams
2016-11-05 2:34 ` Jonathan Tan
2016-10-31 22:38 ` [PATCH v2 2/6] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-11-01 16:39 ` Stefan Beller
2016-10-31 22:38 ` [PATCH v2 3/6] grep: add submodules as a grep source type Brandon Williams
2016-11-01 16:53 ` Stefan Beller
2016-11-01 17:31 ` Junio C Hamano
2016-10-31 22:38 ` [PATCH v2 4/6] grep: optionally recurse into submodules Brandon Williams
2016-11-01 17:26 ` Stefan Beller
2016-11-01 20:25 ` Brandon Williams
2016-10-31 22:38 ` [PATCH v2 5/6] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-11-11 23:09 ` Jonathan Tan
2016-10-31 22:38 ` [PATCH v2 6/6] grep: search history of moved submodules Brandon Williams
2016-11-11 23:51 ` [PATCH v3 0/6] recursively grep across submodules Brandon Williams
2016-11-11 23:51 ` [PATCH v3 1/6] submodules: add helper functions to determine presence of submodules Brandon Williams
2016-11-15 23:49 ` Stefan Beller
2016-11-11 23:51 ` [PATCH v3 2/6] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-11-12 0:22 ` Stefan Beller
2016-11-11 23:51 ` [PATCH v3 3/6] grep: add submodules as a grep source type Brandon Williams
2016-11-11 23:51 ` [PATCH v3 4/6] grep: optionally recurse into submodules Brandon Williams
2016-11-16 0:07 ` Stefan Beller
2016-11-17 22:13 ` Brandon Williams
2016-11-11 23:51 ` [PATCH v3 5/6] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-11-14 18:10 ` Junio C Hamano
2016-11-14 18:44 ` Jonathan Tan
2016-11-14 18:56 ` Junio C Hamano
2016-11-14 19:08 ` Jonathan Tan
2016-11-14 19:14 ` Brandon Williams
2016-11-16 1:09 ` Stefan Beller
2016-11-17 23:34 ` Brandon Williams
2016-11-11 23:51 ` [PATCH v3 6/6] grep: search history of moved submodules Brandon Williams
2016-11-12 0:30 ` Stefan Beller
2016-11-14 17:43 ` Brandon Williams
2016-11-15 17:42 ` [PATCH v3 0/6] recursively grep across submodules Stefan Beller
2016-11-18 19:58 ` [PATCH v4 " Brandon Williams
2016-11-18 19:58 ` [PATCH v4 1/6] submodules: add helper functions to determine presence of submodules Brandon Williams
2016-11-18 19:58 ` [PATCH v4 2/6] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-11-18 19:58 ` [PATCH v4 3/6] grep: add submodules as a grep source type Brandon Williams
2016-11-18 21:37 ` Junio C Hamano
2016-11-18 22:56 ` Brandon Williams
2016-11-18 19:58 ` [PATCH v4 4/6] grep: optionally recurse into submodules Brandon Williams
2016-11-18 21:48 ` Junio C Hamano
2016-11-18 22:01 ` Junio C Hamano
2016-11-18 22:14 ` Junio C Hamano
2016-11-18 22:58 ` Brandon Williams [this message]
2016-11-18 19:58 ` [PATCH v4 5/6] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-11-18 22:19 ` Junio C Hamano
2016-11-18 22:52 ` Brandon Williams
2016-11-21 18:14 ` Brandon Williams
2016-11-18 19:58 ` [PATCH v4 6/6] grep: search history of moved submodules Brandon Williams
2016-11-18 20:10 ` [PATCH v4 0/6] recursively grep across submodules Stefan Beller
2016-11-22 18:46 ` [PATCH v5 " Brandon Williams
2016-11-22 18:46 ` [PATCH v5 1/6] submodules: add helper functions to determine presence of submodules Brandon Williams
2016-11-22 18:46 ` [PATCH v5 2/6] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-11-22 18:46 ` [PATCH v5 3/6] grep: add submodules as a grep source type Brandon Williams
2016-11-22 18:46 ` [PATCH v5 4/6] grep: optionally recurse into submodules Brandon Williams
2016-11-22 18:46 ` [PATCH v5 5/6] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-11-22 22:59 ` Junio C Hamano
2016-11-22 23:21 ` Brandon Williams
2016-11-22 23:28 ` Brandon Williams
2016-11-22 23:37 ` Junio C Hamano
2016-11-22 23:54 ` Brandon Williams
2016-11-22 18:46 ` [PATCH v5 6/6] grep: search history of moved submodules Brandon Williams
2016-12-01 1:28 ` [PATCH v6 0/6] recursively grep across submodules Brandon Williams
2016-12-01 1:28 ` [PATCH v6 1/6] submodules: add helper functions to determine presence of submodules Brandon Williams
2016-12-01 4:29 ` Jeff King
2016-12-01 18:31 ` Stefan Beller
2016-12-01 18:46 ` Junio C Hamano
2016-12-01 19:09 ` Jeff King
2016-12-01 19:16 ` Brandon Williams
2016-12-01 20:54 ` Brandon Williams
2016-12-01 20:59 ` Jeff King
2016-12-01 21:56 ` Stefan Beller
2016-12-01 21:59 ` Jeff King
2016-12-02 18:36 ` Brandon Williams
2016-12-02 18:44 ` Jacob Keller
2016-12-02 18:49 ` Brandon Williams
2016-12-02 19:20 ` Jacob Keller
2016-12-02 19:28 ` Stefan Beller
2016-12-02 21:31 ` Jacob Keller
2016-12-02 21:46 ` Brandon Williams
2016-12-02 21:45 ` Jeff King
2016-12-03 0:16 ` Brandon Williams
2016-12-01 1:28 ` [PATCH v6 2/6] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-12-01 1:28 ` [PATCH v6 3/6] grep: add submodules as a grep source type Brandon Williams
2016-12-01 1:28 ` [PATCH v6 4/6] grep: optionally recurse into submodules Brandon Williams
2016-12-01 1:28 ` [PATCH v6 5/6] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-12-01 7:25 ` Johannes Sixt
2016-12-01 17:51 ` Brandon Williams
2016-12-01 18:49 ` Junio C Hamano
2016-12-01 18:52 ` Jeff King
2016-12-01 1:28 ` [PATCH v6 6/6] grep: search history of moved submodules Brandon Williams
2016-12-01 4:22 ` [PATCH v6 0/6] recursively grep across submodules Jeff King
2016-12-01 17:45 ` Brandon Williams
2016-12-01 19:03 ` Jeff King
2016-12-16 19:03 ` [PATCH v7 0/7] " Brandon Williams
2016-12-16 19:03 ` [PATCH v7 1/7] submodules: add helper to determine if a submodule is populated Brandon Williams
2016-12-16 19:03 ` [PATCH v7 2/7] submodules: add helper to determine if a submodule is initialized Brandon Williams
2016-12-16 19:03 ` [PATCH v7 3/7] submodules: load gitmodules file from commit sha1 Brandon Williams
2016-12-16 19:03 ` [PATCH v7 4/7] grep: add submodules as a grep source type Brandon Williams
2016-12-16 19:03 ` [PATCH v7 5/7] grep: optionally recurse into submodules Brandon Williams
2016-12-16 19:03 ` [PATCH v7 6/7] grep: enable recurse-submodules to work on <tree> objects Brandon Williams
2016-12-16 19:03 ` [PATCH v7 7/7] grep: search history of moved submodules Brandon Williams
2016-12-16 21:42 ` [PATCH v7 0/7] recursively grep across submodules Junio C Hamano
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=20161118225840.GC76630@google.com \
--to=bmwill@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jonathantanmy@google.com \
--cc=sbeller@google.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.