Question: I'm running Ubuntu on VM and MsysGit on Vista. I'm using Github as the git host and tracking the same repository from Msysgit too.

When I pull all the changes from Mysysgit and do the "git status", it lists the uncommitted changes. But when running "git status" from the Ubunutu, its all clean. No uncommitted changes.

Why is this happening in Msysgit.
Both version is 1.6

Answer: 
I know you feel kind of dirty doing this, but it isn't uncommon for rules and guidelines to get shot to hell when performance becomes an issue. For example, quite a few high traffic websites using MySQL have data duplication and denormalized tables. Others [go even crazier](http://bret.appspot.com/entry/how-friendfeed-uses-mysql).

Moral of the story - it may go against everything you were taught or advised, but the benchmarks don't lie. If it works better, just do it.
Perhaps I'll repeat someone else, but here's my point too if it may help.

Teachings are to give you the tools you need to achieve a certain level of ease when encountering such situations.

The Agile Software development methodology says that you have to first deliver the product to your client no matter what your code might look like. Second, you may optimize and make your code "beautiful" or according to the programming states of the art.

Here, either you or your client require performance. Within your project, PERFORMANCE is CRUCIAL, if I understand correctly.

So, I guess you'll agree with me that we don't care about what the code might look like or whether it respects the "art". Do what you have to to make it performant and powerful! Properties allow your code to "format" the data I/O if required. A property has its own memory address, then it looks for its member address when you return the member's value, so you got two searches of address. If performance is such critical, just do it, and make your immutable members public. :-)

This reflects some others point of view too, if I read correctly. :)

Have a good day!