根据版本号获取git库中的文件内容

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;
    }

猜你喜欢

转载自yonge812.iteye.com/blog/1584450