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

Re: git 0.99.7b doesn't build on Cygwin

From
Linus Torvalds <torvalds@osdl.org>
Date
Sep 24, 2005, 00:09 UTC
Message-ID
<Pine.LNX.4.58.0509231647300.3308@g5.osdl.org>
In-Reply-To
<Pine.LNX.4.63.0509231537390.11109@wgmdd8.biozentrum.uni-wuerzburg.de>
On Fri, 23 Sep 2005, Johannes Schindelin wrote:
Show 6 quoted lines
> 
> It seems that the fixup of the mmap()ed regions after a fork() does not 
> work properly in cygwin. Remember that cygwin just wraps the non-POSIX 
> Win32API and tries to make it sort of POSIX compliant. The problem is that 
> Win32API lacks a proper fork(). This is therefore emulated, and after 
> that, all the mmap()ed regions have to be mapped again. That fails.

Now, I'm not a big fan of windows ("No, really? Tell us more!") but I'd actually like it if the _core_ git stuff worked in as wide a variety of situations as possible. Screw the shell scripts and the daemon or secondary things like that which windows users might as well generate their own stuff for, but I'd hope the really core stuff would work.

If I understood correctly, you said that "git-diff-tree" doesn't work due to the fork/mmap issue. Now, I assume that means that it's the builtin diff that has problems.

As far as I can tell, we can solve that two ways:
 - make Windows always use the external diff program. That may be the 
   right thing to do, since then the fork() just turns into a regular 
   fork+exec, which is how windows works anyway.
 - look at doing the diff internally.

I'm wondering if there is some stupid way to turn a diff generated by diff_delta() into a line-based one? If you have the original file and the xdiff, I think we should be able to just walk the original file and output a unified diff.

Davide, maybe I'm being stupid, but I'm thinking that it might be possible to generate a -u3 diff by basically walking the xdiff file in a linear fashion: if the edits are in strictly ascending order, we could walk the original file one line at a time, and keeping a buffer of the three last lines. Then, when the file offset hits the next "edit" in the xdiff, we start generating a line-based diff (and use the previous three lines as the context).

Does that sound possible? Maybe somebody has even done it? Is it a stupid idea?

I realize that it might not generate the same diff as GNU diff would do, and maybe it's really nasty, but it sounds like it _could_ be a "cheap" way of generating diffs, considering that we have something that already generates xdiffs..

		Linus
Previous: Petr BaudisNext: Linus Torvalds
Message 6 of 38 in “git 0.99.7b doesn't build on Cygwin”
  1. Peter TB BrettSep 23, 2005
  2. Johannes SchindelinSep 23, 2005
  3. Peter TB BrettSep 23, 2005
  4. Martin LanghoffSep 23, 2005
  5. Petr BaudisSep 23, 2005
  6. Linus TorvaldsSep 24, 2005
  7. Linus TorvaldsSep 24, 2005
  8. Junio C HamanoSep 25, 2005
  9. Implementing diff, was Re: git 0.99.7b doesn't build on CygwinJohannes Schindelin, Sep 25, 2005
  10. Davide LibenziSep 25, 2005
  11. Linus TorvaldsSep 25, 2005
  12. Davide LibenziSep 25, 2005
  13. Johannes SchindelinSep 24, 2005
  14. Linus TorvaldsSep 24, 2005
  15. Junio C HamanoSep 24, 2005
  16. Davide LibenziSep 24, 2005
  17. Linus TorvaldsSep 24, 2005
  18. Davide LibenziSep 24, 2005
  19. Junio C HamanoSep 24, 2005
  20. Davide LibenziSep 24, 2005
  21. Junio C HamanoSep 24, 2005
  22. Junio C HamanoSep 24, 2005
  23. Davide LibenziSep 24, 2005
  24. Linus TorvaldsSep 24, 2005
  25. Linus TorvaldsSep 24, 2005
  26. Linus TorvaldsSep 25, 2005
  27. Jon LoeligerSep 26, 2005
  28. Junio C HamanoSep 26, 2005
  29. Davide LibenziSep 24, 2005
  30. Giuseppe BilottaSep 25, 2005
  31. Junio C HamanoSep 26, 2005
  32. Davide LibenziSep 26, 2005
  33. Giuseppe BilottaSep 26, 2005
  34. H. Peter AnvinSep 26, 2005
  35. Davide LibenziSep 26, 2005
  36. H. Peter AnvinSep 26, 2005
  37. Daniel BarkalowSep 25, 2005
  38. Davide LibenziSep 24, 2005

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.