为了账号安全,请及时绑定邮箱和手机立即绑定

JGit - 提交到字符串中的内容

JGit - 提交到字符串中的内容

一只斗牛犬 2022-09-14 15:34:17
我需要存储提交的内容,这将是与例如的区别。master 到最新提交的字符串。如何使用 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();我知道这在库中不存在,但必须有一些东西可以将提交的内容放入可以转换为字符串的内容中
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

代码已更改为


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


查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信