git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: crash on git diff-tree -Ganything <tree> for new files with textconv filter

From
Jeff King <peff@peff.net>
Date
Oct 30, 2012, 13:12 UTC
Message-ID
<20121030131221.GA19571@sigill.intra.peff.net>
In-Reply-To
<da24b6ea-ac9b-46dd-b591-25fd4e8e6504@email.android.com>
On Tue, Oct 30, 2012 at 09:46:01PM +0900, Junio C Hamano wrote:
> (1) sounds attractive for more than one reason. In addition to
> avoidance of this issue, it would bring bug-to-bug compatibility
> across platforms.

Yeah. I mentioned breaking the build for people who would now need to turn on NO_REGEX. But the only reason to do that is to let people on glibc systems use the system version of the tools. A much saner approach would be to just always build with our compat regex, and turn NO_REGEX into a no-op. We already do the same thing for kwset.

> (4), if we can run grep on streaming data (tweak interface we have for
> checking out a large blob to the working tree), would let us work on
> dataset larger than fit in core. Even though it would be much more
> work, it might turn out to be a better option in the longer run.

Agreed, that would be nice. It's potentially a lot of work, but we could probably get by with a special streaming version of diff_populate_filespec.

The tricky thing is that we have to run the regex matcher progressively as we stream data in (since your match might fall in the middle of a read boundary). Which is certainly going to require switching off of regular regexec. I don't think glibc regex will handle it either, though. It looks like pcre can report a partial match at the end of the string, and you can either continue with the next chunk (if using pcre_dfa) or append and re-start the pattern match (for regular pcre_exec).

Which means we'd probably have to make streaming matches an optional feature, and still do (1) first to fix the correctness issue.

-Peff
Previous: Junio C HamanoNext: Ramsay Jones
Message 19 of 24 in “crash on git diff-tree -Ganything <tree> for new files with textconv filter”
  1. Peter OberndorferOct 27, 2012
  2. Jeff KingOct 28, 2012
  3. 0/2 textconv support for "log -S"Jeff King, Oct 28, 2012
  4. 1/2 pickaxe: hoist empty needle checkJeff King, Oct 28, 2012
  5. 2/2 pickaxe: use textconv for -S countingJeff King, Oct 28, 2012
  6. Junio C HamanoNov 13, 2012
  7. Jeff KingNov 15, 2012
  8. Junio C HamanoNov 20, 2012
  9. Junio C HamanoNov 20, 2012
  10. Jeff KingNov 21, 2012
  11. Peter OberndorferOct 28, 2012
  12. Jeff KingOct 29, 2012
  13. Jeff KingOct 29, 2012
  14. Peter OberndorferOct 29, 2012
  15. Jeff KingOct 29, 2012
  16. Jeff KingOct 29, 2012
  17. Jeff KingOct 30, 2012
  18. Junio C HamanoOct 30, 2012
  19. Jeff KingOct 30, 2012
  20. Ramsay JonesNov 1, 2012
  21. Peter OberndorferNov 7, 2012
  22. Jeff KingNov 7, 2012
  23. Peter OberndorferJun 3, 2013
  24. Jeff KingJun 3, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.