From: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] grep: do not do external grep on skip-worktree entries
Date: Sun, 3 Jan 2010 02:15:22 +0700 [thread overview]
Message-ID: <fcaeb9bf1001021115j7b23264n42cfba7855c2253e@mail.gmail.com> (raw)
In-Reply-To: <7vtyv4cpna.fsf@alter.siamese.dyndns.org>
On 1/3/10, Junio C Hamano <gitster@pobox.com> wrote:
> Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:
>
> > On Wed, Dec 30, 2009 at 11:09:52PM -0800, Junio C Hamano wrote:
> >> Junio C Hamano <gitster@pobox.com> writes:
> >>
> >> > This looks a bit wrong for a couple of reasons:
> >> >
> >> > - external_grep() is designed to return negative without running external
> >> > grep when it shouldn't be used (see the beginning of the function for
> >> > how it refuses to run when opt->extended is set and other conditions).
> >> > The new logic seems to belong there, i.e. "in addition to the existing
> >> > case we decline, if ce_skip_worktree() entry exists in the cache, we
> >> > decline";
> >>
> >> IOW, something like this instead of your patch. You would want to tests
> >> to demonstrate the original breakage, perhaps?
> >
> > Your patch works great. By the way I think we should move "cached"
> > check from grep_cache() into external_grep() too, for consistency.
>
>
> I think what I gave you is more consistent.
>
> "cached" is about "are we searching in the index or in the work tree?" and
> "external_grep()" is about "it often is faster to run external grep when
> we are searching in the work tree, so do that if the other constraints
> allow us to". An example of such a constraint is that we must be able to
> express the operation on the command line of a traditional grep, and use
> of git extended grep synatx makes it unfeasible, hence the function says
> "I can't" in such a case.
>
> You can change the definition of "external_grep()" to "try to use external
> grep somewhere, if the other constraints allow us to", and have the caller
> and the function do an "this time, please grep for this pattern in the
> index---I can't" exchange, but I don't see much point. We _know_ no
> external grep will ever be able to read from the index.
>
> We should simply drop "cached" argument from external_grep().
OK.
> > diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh
> > index abd14bf..f77970c 100755
> > --- a/t/t7002-grep.sh
> > +++ b/t/t7002-grep.sh
> > @@ -8,6 +8,14 @@ test_description='git grep various.
> >
> > . ./test-lib.sh
> >
> > +support_external_grep() {
> > + case "$(git grep -h 2>&1 >/dev/null|grep -e --ext-grep)" in
> > + *"(default)"*) return 0;;
> > + *"(ignored by this build)"*) return 1;;
> > + *) test_expect_success 'External grep check is broken' 'false';;
> > + esac
> > +}
>
>
> Heh, clever.
>
> git grep -h 2>&1 | grep 'allow calling of grep.*default' >/dev/null
>
> may be sufficient, though.
>
Yes, until somebody changes help text in builtin-grep.c and all
external grep tests become disable. I wanted to catch that case too.
Or maybe just add another option --show-features to "git rev-parse"
(or extend git version string, is the version format fixed?) to list
all built-time features that a git build supports. Some comes to mind:
external-grep, iconv, ipv6, http (unlikely), threading... Much less
tricky to test.
--
Duy
next prev parent reply other threads:[~2010-01-02 19:15 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-30 14:11 [PATCH] grep: do not do external grep on skip-worktree entries Nguyễn Thái Ngọc Duy
2009-12-31 7:01 ` Junio C Hamano
2009-12-31 7:09 ` Junio C Hamano
2010-01-02 11:50 ` Nguyen Thai Ngoc Duy
2010-01-02 18:44 ` Junio C Hamano
2010-01-02 19:15 ` Nguyen Thai Ngoc Duy [this message]
2010-01-02 19:45 ` Junio C Hamano
2010-01-03 2:35 ` Miles Bader
2010-01-03 2:47 ` Miles Bader
2010-01-03 3:08 ` Miles Bader
2010-01-03 19:32 ` Linus Torvalds
2010-01-03 20:49 ` Junio C Hamano
2010-01-04 5:31 ` Jeff King
2010-01-04 5:52 ` Junio C Hamano
2010-01-04 6:44 ` Jeff King
2010-01-04 7:08 ` Junio C Hamano
2010-01-04 7:14 ` Junio C Hamano
2010-01-04 7:29 ` Jeff King
2010-01-04 7:26 ` Jeff King
2010-01-04 8:09 ` Jeff King
2010-01-04 16:01 ` Linus Torvalds
2010-01-04 15:54 ` Linus Torvalds
2010-01-04 15:57 ` Miles Bader
2010-01-04 16:03 ` Linus Torvalds
2010-01-11 6:39 ` Junio C Hamano
2010-01-11 15:43 ` Linus Torvalds
2010-01-11 15:59 ` Linus Torvalds
2010-01-11 16:22 ` Junio C Hamano
2010-01-11 16:24 ` Junio C Hamano
2010-01-11 16:33 ` Linus Torvalds
2010-01-12 8:29 ` Junio C Hamano
2010-01-12 8:31 ` [PATCH] grep: lookahead optimization can be used with -L option Junio C Hamano
2010-01-12 8:32 ` [PATCH] grep: -L should show empty files Junio C Hamano
2010-01-12 21:27 ` Sverre Rabbelier
2010-01-13 6:56 ` Junio C Hamano
2010-01-13 16:04 ` Sverre Rabbelier
2010-01-13 19:48 ` Junio C Hamano
2010-01-13 6:48 ` [PATCH 1/2] grep: rip out support for external grep Junio C Hamano
2010-01-13 8:29 ` Jay Soffian
2010-01-13 8:59 ` Junio C Hamano
2010-01-13 15:20 ` Linus Torvalds
2010-01-13 6:51 ` [PATCH 2/2] grep: rip out pessimization to use fixmatch() Junio C Hamano
2010-01-12 16:21 ` [PATCH] grep: do not do external grep on skip-worktree entries Jeff King
2010-01-11 19:26 ` Fredrik Kuivinen
[not found] ` <4c8ef71001111119p253170f8q37bcd3708d894a62@mail.gmail.com>
2010-01-11 19:29 ` Linus Torvalds
2010-01-11 19:40 ` Fredrik Kuivinen
2010-01-11 20:07 ` Linus Torvalds
2010-01-11 21:07 ` Fredrik Kuivinen
2010-01-11 21:24 ` Linus Torvalds
2010-01-04 16:24 ` Linus Torvalds
2010-01-04 10:14 ` Nguyen Thai Ngoc Duy
2010-01-04 6:06 ` Mike Hommey
2010-01-04 7:04 ` Jeff King
2010-01-04 12:34 ` [PATCH 1/2] t7002: set test prerequisite "external-grep" if supported Nguyễn Thái Ngọc Duy
2010-01-07 2:37 ` Junio C Hamano
2010-01-07 4:29 ` Junio C Hamano
2010-01-07 13:27 ` Nguyen Thai Ngoc Duy
2010-01-07 14:04 ` Johannes Sixt
2010-01-07 14:26 ` Nguyen Thai Ngoc Duy
2010-01-04 12:34 ` [PATCH 2/2] t7002: add tests for skip-worktree fixes in commit a67e281 Nguyễn Thái Ngọc Duy
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=fcaeb9bf1001021115j7b23264n42cfba7855c2253e@mail.gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 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 NNTP newsgroup(s).