[PATCH 0/9] respect binary attribute in grep
- From
Jeff King <peff@peff.net>
- Date
- Feb 2, 2012, 08:17 UTC
- Message-ID
- <20120202081747.GA10271@sigill.intra.peff.net>
- In-Reply-To
- <20120202005209.GA6883@sigill.intra.peff.net>
[+cc Thomas, as I am mangling some of his recent work with my
refactoring]On Wed, Feb 01, 2012 at 07:52:09PM -0500, Jeff King wrote:
Show 6 quoted lines
> > Hrm, I would have expected a patch that turns "const char *name" into a > > structure that has name and drv as its members, so that later we can tell > > the function more about the nature of the contents. Or a separate pointer > > to drv in place of your "binary" flag word. > [...] > I'll take a look at re-working it that way.
Thanks for a dose of sanity. The result turned out much easier to read (and explain in the commit messages, as it was simple to break into smaller commits). In particular, the "don't read binary-marked files at all with -I" optimization became very natural.
I implemented all of the other optimizations I mentioned except the "only stream the first few bytes when auto-detecting binary-ness" one. However, it should be easy to do on top of these changes. I need to re-visit the similar change to diff_filespec_is_binary, and I'll do both at the same time.
The patches are:
[1/9]: grep: make locking flag global [2/9]: grep: move sha1-reading mutex into low-level code [3/9]: grep: refactor the concept of "grep source" into an object [4/9]: convert git-grep to use grep_source interface [5/9]: grep: drop grep_buffer's "name" parameter [6/9]: grep: cache userdiff_driver in grep_source
These are all refactoring that should have no behavior change.
[7/9]: grep: respect diff attributes for binary-ness
This is the point of the series. :)
[8/9]: grep: load file data after checking binary-ness [9/9]: grep: pre-load userdiff drivers when threaded
And these two are simple optimizations.
-Peff