4

Solved

It seems the remote repo contains two files named the same, except for the first letter. This caused a file overwrite on my system, which led to the issue below.

Update

It seems it has nothing to do with newlines, but I can't yet find an explanation. Here's what happens.

git status reports FileStartingWithCapitalLetter.php has been modified

On the other hand, browsing my case-insensitive file system, shows fileStartingWithCapitalLetter.php, which is actually starting with a lower-case "f".

git diff FileStartingWithCapitalLetter.php

shows this (the diff is hard to spot, it's the R in Redirect, which led me to think it has to do with CRLF):

diff --git a/test/functional/frontend/RedirectActionsTest.php b/test/functional/frontend/RedirectActionsTest.php
index 66e1fef..c574583 100644
--- a/test/functional/frontend/RedirectActionsTest.php
+++ b/test/functional/frontend/RedirectActionsTest.php
@@ -5,10 +5,10 @@ include(dirname(__FILE__).'/../../bootstrap/functional.php');
 $browser = new sfTestFunctional(new sfBrowser());
 
 $browser->
-  get('/Redirect/index')->
+  get('/redirect/index')->
 
   with('request')->begin()->
-    isParameter('module', 'Redirect')->
+    isParameter('module', 'redirect')->
     isParameter('action', 'index')->
   end()->

On the other hand, git diff fileStartingWithCapitalLetter.php (lower-case f), shows no changes.

What's the fix to this?

Old issue

I've cloned a git repo and then, immediately, executed git status. It was not a surprise to see that it reports modified files, as it happened to me before. There are CRLF line endings committed from a Windows machine (I'm on OS X).

Now, what really surprised me is that this didn't work:

$ git config core.autocrlf false
$ rm .git/index
$ git reset
Unstaged changes after reset:
M  test/functional/frontend/RedirectActionsTest.php

Does anyone have any ideas about what's wrong and how to solve it? I'm using Git 1.7.0.2.

Community
  • 1
  • 1
Ionuț G. Stan
  • 176,118
  • 18
  • 189
  • 202

1 Answers1

3

You could try to set this setting at the global level (Note: I also like having it set to false)

$ git config --global core.autocrlf false

and then clone again to see if this work better.

The other setting to watch out is: ignorecase true (also to set at the global level).
See this SO question as an example, and this one as an illustration of what can go wrong.

Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
  • Thanks for the answer VonC. It seems it has nothing to do with newlines, but with case (in)sensitive file paths. – Ionuț G. Stan Jul 07 '10 at 13:47
  • @Ionut: ok, another "evil" setting to deal with ;) `ignorecase = true` or `false`, as in http://stackoverflow.com/questions/52950/how-to-make-git-ignore-changes-in-case, or else: http://stackoverflow.com/questions/1248029/git-pull-error-entry-foo-not-uptodate-cannot-merge/1995378#1995378 – VonC Jul 07 '10 at 14:39
  • Thanks. If you care to edit your answer, I would mark it as correct. – Ionuț G. Stan Jul 07 '10 at 14:53