Been having a difficult time fixing the two remaining test suite failures
when run on a FAT filesystem.

On Friday, I got quite lost trying to understand the first failure. At
first I thought it had something to do with queued git staging commands not
being run in the right git environment when git-annex is using a different
index file or work tree. I did find and fix a potential bug in that area.
It might be that some reports long ago of git-annex branch files getting
written to the master branch was caused by that. But, fixing it did not
help with the test suite failure at hand.

Today, I quickly found the actual cause of the first failure.
Of course, it had nothing to do with queued git commands at
all, and was a simple fix in the end.

But, I've been staring at the second failure for hours and am not much
wiser. All I know is, an invalid tree object gets generated by the adjusted
branch code that contains some files more than once. (git gets very
confused when a repository contains such tree objects; if you wanted to break a
git repository, getting such trees into it might be a good way. *cough*) This
invalid tree object seems to be caused by the basis ref for the adjusted branch
diverging somehow from the adjusted branch itself. I have not been able to
determine why or how the basis ref can diverge like that.

Also, this failure is somewhat indeterminite, doesn't always occur and
reordering the tests in the test suite can hide it. Weird.

Well, hopefully looking at it again later with fresh eyes will help.
