I'm writing a program that needs to concurrently extract different commits from the same repository (like in this question, but concurrently).
Porcelain commands such as git checkout
and git archive
operate on the index, thus any time a commit would need to be extracted, it would need to move HEAD and/or go through the index first.
Is there a simple way to just dump a Git tree object into a directory on the filesystem?