...It seems sane to git gc --auto from command that are expected to take time. That's probably the reason why it's not called on commits and called on receive-pack. But then why call it on merges? Especially on those that have no conflicts and should run fast. Also, merges are not supposed to introduce unreachable objects. P.S. The old gmane discussion referenced by some previous posts on this subject is lost.