views:

39

answers:

1

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.

+1  A: 

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.

VonC
Thanks for the answer VonC. It seems it has nothing to do with newlines, but with case (in)sensitive file paths.
Ionuț G. Stan
@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
Thanks. If you care to edit your answer, I would mark it as correct.
Ionuț G. Stan
@Ionuț: answer edited as requested.
VonC