Subject: Re: Copying Git repository from Linux to Windows.

From: Jakub Narebski <[email-masked]>
Date: Wed, 15 Jun 2011 13:29:52 +0200

On Wed, 15 June 2011, viresh kumar wrote:
> On 06/15/2011 04:10 PM, Jakub Narebski wrote:
>> viresh kumar <[email-masked]> writes:

>>> After completing copy operation on mem stick, i found something strange.
>>> - git branch shows correct results and is exactly same of state at Linux machine.
>>> - git log is also fine.
>>> - git status, shows me a lot of files are modified, which is not present in Linux.
>> 
>> That is probably because stat information is stale... or stat
>> information doesn't work.  Does second "git status" still show files
>> as modified?
> 
> Yes. The files status is same.
> 
>>> - git reset --hard also doesn't work and fails with following error.
>>>
>>> $ git reset --hard HEAD
>>> error: unable to create symlink arch/microblaze/boot/dts/system.dts (Operation not permitted)
>>> Checking out files: 100% (36696/36696), done.
>>> fatal: Could not reset index file to revision 'HEAD'.
>> 
>> Try setting `core.symlinks` to false, or just try
>> 
>>  $ git -c core.symlinks=false reset --hard HEAD
[...]
>> BTW. what filesystem do you use?
>> 
> 
> It was FAT on memory stick as FAT is also there in Windows PC.
> More observation: All files marked modified had only changes in file permissions.
> i.e. 755 instead of 644. chmod doesn't work with FAT so can't change there permissions
> now.

Ah. This is caused by the fact that FAT doesn't store executable
permission.

> Problem is not only for symlinks but standard c files too.

So beside setting `core.symlinks` to false, you would have also set
`core.filemode` to false (and perhaps also `core.ignorecase` to true).

You might also want to set `core.ignoreStat` to true to try to increase
performace.

P.S. git-bundle ddidn't work?

-- 
Jakub Narebski
Poland