Commands should declare to throw GitAPIException for exceptions which are supposed to be handled by clients, specific exceptions should be subclasses of GitAPIException. 

JGitInternalException should wrap internal exception clients can't handle in a reasonable way.