You never free_commit_list() exclude.
Side thought: we do not really support multiple ranges, do we? E.g.
git-rev-list HEAD~10..HEAD~8 HEAD^..
would not yield the intended result, right? (And same goes for ... ranges)
Maybe we should at least warn about that.
Ciao,
Dscho