Re: git on Cygwin: Not a valid object name HEAD
- From
Steffen Prohaska <prohaska@zib.de>
- Date
- Aug 7, 2007, 22:46 UTC
- Message-ID
- <A80CCC35-DE1E-4A0B-9144-A8165AF6C98A@zib.de>
- In-Reply-To
- <alpine.LFD.0.999.0708071439021.5037@woody.linux-foundation.org>
On Aug 7, 2007, at 11:44 PM, Linus Torvalds wrote:
Show 24 quoted lines
> > > On Tue, 7 Aug 2007, Steffen Prohaska wrote: >> >> Is there any chance that patches would be accepted that try to >> do so? Even if they add "b" to fopen and O_BINARY to open, which >> both are useless on Unix? > > I certainly don't think it would be wrong to add O_BINARY to the > open() > parameters (and "b" to fopen() and friends), if it makes a difference. > > Add a > > #ifndef O_BINARY > #define O_BINARY 0 > #endif > > and it should be harmless anywhere else. > > So if you're willing to test, and extend on this, maybe something like > this gets you started (I think the main issue will be the object > files, > no?)
I took a more radical approach and used a small script to add "b" to all calls to fopen and O_BINARY to all calls to open. O_BINARY is provided by the Makefile if not on cygwin. I don't think we need to differentiate between binary and textfiles. I'll send the patch shortly.
I started to run the tests on cygwin in textmode. I chose the following setup.
- cygwin is set to binmode, that is cygwin's git is working.
- I used git to cloned git to a Windows directory, say c:\git and compiled there. The Windows directory is mounted in binmode.
- For testing I 'mount' this directory in text mode, in my example
cd /
mkdir git-textmode
mount --text 'c:\git' git-textmodeThis setup allows you to work with git and test in the same working directory in textmode. You should double check in which of your directories you commit. Right now, committing in the textmode directory is only for the brave ones. 'git read-tree HEAD' in the binmode directory should help if you executed the wrong git in the wrong directory and your index got corrupted.
The first problems I ran into are pre-computed sha1's for the test cases. I started to add d2u to the test scripts to generate files with unix style line endings even if cygwin is in textmode. This is needed to match the expected results that come with the test files. I'll send the first changes in a second patch. The patch is only for illustrating the problem. It's not thought to be applied.
The tests are running. t0000-basic and t0010-racy-git pass. I'll send a testlog later. It's running inside a virtual machine on a laptop, so it may take some more time.
I suspect the tests will report a lot of errors. At least all tests that compare 'echo' output with precomputed sha1's or expected results that come with the tests should fail. I haven't fully understood the details of line conversion of cygwin. Some work may be needed to eliminate false fails from the tests, e.g. by adding 'd2u', and find the real problems.
I have no time to continue today.
Steffen