Maybe we should always have commands implement a call() method and the java.util.concurrent.Callable interface.  It may help application developers to chain together commands with other platform APIs, especially things like a Future.

Also, do we really want to expose the Commit object to the caller?  I'm trying to get rid of it.  Maybe RevCommit is better since its immutable, and offers more functionality (e.g. parsing of footer lines).