From: Shawn O. Pearce Date: Wed, 03 Dec 2008 16:04:46 GMT Subject: Re: Ad: fast-import problem importing dos format files under cygwin Message-ID: <20081203160446.GY23984@spearce.org> In-Reply-To: <51143.194.138.12.144.1228311791.squirrel@artax.karlin.mff.cuni.cz> Jan Hudec wrote: > Dne 3 Prosinec 2008, 13:18, Johannes Sixt napsal(a): > > Jan Hudec schrieb: > >> On 3 December 2008, 08:51, Jan Hudec wrote: > >>> Hello folks, > >>> > >>> I have been playing with fast-import in cygwin and I have problems > >>> importing files with CR/LF line-endings. The size in data command is > >>> calculated including the CRs and than the file is copied binary to the > >>> fast-import input stream. However fast-import skips the CRs when > >>> reading, > >>> overreads by that number of bytes and fails when it tries to read the > >>> next command from the middle. > > > > Do you happen to have core.autocrlf set in some way and could it make a > > difference for fast-import? I have it unset. > > I have it set to false explicitly in global config. Tried with not having > it set at all and gives the same problem. Since the previous version of > MSys Git worked for me, I suspect it's somehow cygwin-related. Huh. So fast-import *never* does auto-CRLF conversion, even if the property is set. It just doesn't make those calls internally. It blindly copies data from the input stream into the pack. No exceptions. fast-import under-reading near CRs and getting misaligned on its input indicates that the stdio library has given us a FILE* for stdin which is converting CRLF pairs into LFs, even within an fread() call. My guess here is fast-import's stdin is set in text mode, but it really needs to be in binary mode. fast-import.c never attempts to correct that when it starts, so on DOS based systems we are probably totally screwed from the beginning... -- Shawn.