public ByteArrayOutputStream read(String revision) {
ByteArrayOutputStream out = null;
Repository repository = null;
try {
//gitDir表示git库目录
Git git = Git.open(gitDir);
repository = git.getRepository();
RevWalk walk = new RevWalk(repository);
ObjectId objId = repository.resolve(revision);
RevCommit revCommit = walk.parseCommit(objId);
RevTree revTree = revCommit.getTree();
//child表示相对git库的文件路径
TreeWalk treeWalk = TreeWalk.forPath(repository, child, revTree);
ObjectId blobId = treeWalk.getObjectId(0);
ObjectLoader loader = repository.open(blobId);
loader.copyTo(out);
} catch (IOException e) {
logger.error("", e);
} catch (JGitInternalException e) {
logger.error("", e);
} finally {
if (repository != null)
repository.close();
}
return out;
}