JGit - 提交到字符串的内容

问题描述 投票:0回答:1

我需要存储提交的内容,这将是与例如的区别。掌握到最新的提交,在一个字符串中。

How to show changes between commits with JGit最底层的答案与我想要的非常相似

这是链接中的代码

RevCommit headCommit = getHeadCommit(repository);
    RevCommit diffWith = headCommit.getParent(0);
    FileOutputStream stdout = new FileOutputStream(FileDescriptor.out);
    try (DiffFormatter diffFormatter = new DiffFormatter(stdout)) {
        diffFormatter.setRepository(repository);
        for (DiffEntry entry : diffFormatter.scan(diffWith, headCommit)) {
            diffFormatter.format(diffFormatter.toFileHeader(entry));
        }
    }
diffFormatter.format(diffFormatter.toFileHeader(entry));

format()方法是void,似乎没有办法返回字符串或某种输出流。

我希望有类似的东西

String commitDiff = diffFormatter.getCommitContents(entry).toString();

我知道这不存在于库中,但必须有一些东西可以将提交的内容放入可以转换为字符串的内容中

java jgit
1个回答
0
投票

代码已更改为

OutputStream output = new OutputStream() {
    private StringBuilder string = new StringBuilder();
    @Override
    public void write(int b) throws IOException {
        this.string.append((char) b );
    }

    public String toString(){
        return this.string.toString();
    }
};
RevCommit headCommit = getHeadCommit(repository);
RevCommit diffWith = headCommit.getParent(0);
try (DiffFormatter diffFormatter = new DiffFormatter(output)) {
    diffFormatter.setRepository(repository);
    for (DiffEntry entry : diffFormatter.scan(diffWith, headCommit)) {
        diffFormatter.format(diffFormatter.toFileHeader(entry));
    }
String strings = output.toString();
System.out.println(strings);

这是一个漫长的方式,但它证明它可以完成这已经存储差异到字符串

strings
© www.soinside.com 2019 - 2024. All rights reserved.