Maybe this was a misunderstanding by Stefan and me. 
When reading http://www.kernel.org/pub/software/scm/git/docs/git-merge.html#_pre_merge_checks we thought that FAST_FORWARD and ALREADY_UP_TO_DATE are checks which are done before we contact the merge strategy. This loop was never intended to be a "big loop doing all the merges and maybe combining merge operations" - we just wanted to do these two pre-merge checks. 

But after reading your comment and experimenting we see that these pre-merge checks are not done before the merge strategy but every strategy triggers them explicitly, right?

For now we'll remove the loop and keep the fast-forward, already-up-to-date checks. We'll make sure that only one commit is specifiied.