JGit-提交到字符串的内容

时间:2019-04-01 14:02:04

标签: java jgit

我需要存储提交的内容,这与例如。以字符串形式掌握最新提交的内容。

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()方法是无效的,并且似乎没有办法返回字符串或某种输出流。

我希望会有类似的东西

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

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

1 个答案:

答案 0 :(得分: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