Re: Why O_EXCL would make this difference? I am puzzled..
From: Linus Torvalds <torvalds@osdl.org>
Date: 2016-06-15 22:42:02
On Thu, 14 Jul 2005, Junio C Hamano wrote:
The bisect search found that the commit Make "git-checkout" create files with O_EXCL makes the test t1005 fail. But it is getting late so I give up to figuire this out tonight.
Ahh, thanks for noticing. It says * expecting success: rm -f .git/index && rm -fr DF && mkdir DF && echo DF/DF >DF/DF && git-update-cache --add DF/DF && read_tree_twoway $treeDFDF $treeDF && git-ls-files --stage >DFDFcheck.out && diff -u DF.out DFDFcheck.out && check_cache_at DF clean && # different from pure 2-way : 100644 052efc3abbc31348f7abd34535b1953d38273257 3 DF 100644 b90ea14b2dd74b6f377c10870b3757344bbe077c 1 DF/DF 100644 b90ea14b2dd74b6f377c10870b3757344bbe077c 2 DF/DF Adding DF error: git-checkout-cache: unable to create file DF (File exists) Removing DF/DF 100644 052efc3abbc31348f7abd34535b1953d38273257 0 DF DF: dirty * FAIL 24: DF vs DF/DF case test (#2) rm -f .git/index && Which is strange. If the path already exists, the "lstat(path, &st)" should have returned 0 in checkout_entry (which is the only caller of "write_entry()"), and that code does an "unlink(path)" before it calls write-entry. So I was sure O_EXCL wouldn't make any difference, but I'm obviously wrong, wrong, wrong. I'll strace the dang thing. Linus