From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Torvalds Subject: Re: git 0.99.7b doesn't build on Cygwin Date: Fri, 23 Sep 2005 17:09:11 -0700 (PDT) Message-ID: References: Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Peter TB Brett , Git Mailing List , Davide Libenzi X-From: git-owner@vger.kernel.org Sat Sep 24 02:10:28 2005 Return-path: Received: from vger.kernel.org ([209.132.176.167]) by ciao.gmane.org with esmtp (Exim 4.43) id 1EIxbb-0006Np-Rv for gcvg-git@gmane.org; Sat, 24 Sep 2005 02:09:28 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932135AbVIXAJY (ORCPT ); Fri, 23 Sep 2005 20:09:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932136AbVIXAJY (ORCPT ); Fri, 23 Sep 2005 20:09:24 -0400 Received: from smtp.osdl.org ([65.172.181.4]:28557 "EHLO smtp.osdl.org") by vger.kernel.org with ESMTP id S932135AbVIXAJX (ORCPT ); Fri, 23 Sep 2005 20:09:23 -0400 Received: from shell0.pdx.osdl.net (fw.osdl.org [65.172.181.6]) by smtp.osdl.org (8.12.8/8.12.8) with ESMTP id j8O09F4s018226 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Fri, 23 Sep 2005 17:09:15 -0700 Received: from localhost (shell0.pdx.osdl.net [10.9.0.31]) by shell0.pdx.osdl.net (8.13.1/8.11.6) with ESMTP id j8O09BqT017690; Fri, 23 Sep 2005 17:09:13 -0700 To: Johannes Schindelin In-Reply-To: X-Spam-Status: No, hits=0 required=5 tests= X-Spam-Checker-Version: SpamAssassin 2.63-osdl_revision__1.45__ X-MIMEDefang-Filter: osdl$Revision: 1.118 $ X-Scanned-By: MIMEDefang 2.36 Sender: git-owner@vger.kernel.org Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: On Fri, 23 Sep 2005, Johannes Schindelin wrote: > > 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