Friday, April 16, 2010

Git Fail

$ git add file-that-is-1.4GB
fatal: Out of memory? mmap failed: Cannot allocate memory
Is that it? Git just can't handle files that are that big?

Yep. That's it. Here are other people who have found the same thing:

I guess this is one more way in which SVN is better than Git. I still like Git, but it's by no means better than SVN in every way.

Why does "suppress" have 2 'p's?

Forgive me for thinking that "supress" was correct spelling. All the rules about English spelling I know say that that word should have only one 'p'. Look at the word "supremacy". That has only one 'p'. The etymology of "suppress" is sub + premere [wiktionary]. That doesn't even have 'p's at all, let alone two of them. You know what, I'm just going to keep spelling it "supress".

Friday, April 9, 2010

MSYS Make and Windows Paths

Why can I not find any documentation about how Windows absolute paths are interpreted in MSYS make?
C:\TEMP\tmp2.txt: C:\TEMP\tmp.txt
touch C:\\TEMP\\tmp2.txt
This works just fine in MSYS make. Cygwin make can't handle all those colons. Why doesn't MSYS document how it handles paths anywhere?

Tuesday, April 6, 2010

Remote Desktop Connections suck at event queuing

Microsoft Remote Desktop Connections are great when the network is working. When there's a brief lag in the connection, events are queued. Great. The problem is that keyboard events and mouse events are in DIFFERENT QUEUES!! The network just lagged for me, so I clicked in a location in a text editor and typed a word. When the lag passed, my events went through, but the word was typed at the old cursor location, and then the mouse click went through and jumped the cursor to the new place. Would it really have been that hard to buffer all input in the same queue?? Come on!

Monday, April 5, 2010

Why Git is like a Microsoft product

That's right, I just said Git is like it's written by Microsoft. Or rather designed by. It works, which is awesome, but its design features one serious drawback of which I find Microsoft products to be the most prominent source. The drawback is namespace pollution.

In Windows, you're not allowed to name a file "CON". Why? Because of namespace pollution. There are 25 reserved names that show up in the context of file names, but that aren't really file names because they're special.

This writes "hello" into a file called "conn":
echo hello >conn
This doesn't create a file at all. I have no idea what it does:
echo hello >con
The only difference is that "con" (case insensitive) is a special name. I'm calling this namespace pollution because there are a set of names (file names) and a set of names (reserved names) that are mixed together.

In Git it's a lot clearer what I mean by namespace pollution.
git checkout thing
What does this do? Can't tell. It might revert a file called "thing" to it's state at the last commit. It might switch the entire working directory to another branch called "thing". Which of these happens depends on whether there's a file called "thing" or a branch called "thing". If both exist, I'm sure one of them happens, but I don't know which without doing an experiment or reading through documentation. I'm not going to do that. Why can't there be different syntax for the two? Like
git switchtobranch thing
git revertfile thing
I'm going to say it. SVN's syntax is much more understandable.