当前位置: 首页 > 知识库问答 >
问题:

JGit-提交到字符串的内容

拓拔霄
2023-03-14

我需要将提交的内容存储在字符串中,这将是从例如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));

格式()方法是无效的,似乎没有办法返回字符串或某种输出流。

我希望会有一些类似于

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

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

共有1个答案

融伯寅
2023-03-14

代码已更改为

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
 类似资料:
  • JGit初学者问题: 我使用JGit从存储库读取文件(BLOB)并操作其内容。之后,我想将具有相同文件名的新内容作为新提交写回存储库。但是如何使用JGit提交新内容? 我的伪代码: 我是否必须将 写入一个文件,并使用 AddCommand 和 CommitCommand 提交此文件?或者,我可以将 String“即时”写入具有相同文件名的存储库吗? 网络上有没有一个示例如何使用JGit进行提交?

  • 如何使用jgit遍历来自特定分支的特定提交的所有内容? 这段代码从提交中检索一个特殊文件,但我希望遍历提交的所有内容。

  • 我需要使用JGit获取与特定提交关联的分支的名称。我使用JGit获取存储库的提交SHA的完整列表,现在我需要知道它所属的分支的名称。 如果有人能让我知道我如何做到这一点,我将不胜感激。

  • 我正在尝试使用jgit将单个blob直接提交到存储库中。我知道如何插入blob并获得它的sha1,但是我很难为这个场景构建一个树。我似乎不知道如何正确地使用jgit的树抽象(TreeWalk之类的)来递归地构造一个树,几乎与以前的提交相同,只是blob的父树不同。 在JGit中执行此操作的惯用方法是什么? 我之所以这么问,是因为我正在编写一个程序,它类似于git存储库中文档的编辑器。在我的例子中,

  • 问题内容: 我正在尝试找到一种方法来将一个JSON字符串用作各种“模板”以应用于另一个JSON字符串。例如,如果我的模板如下所示: 然后将其应用于以下JSON字符串: 我想要如下所示的结果JSON字符串: 不幸的是,我既不能依赖模板也不可以是固定格式的输入,因此我无法编组/解组到已定义的接口中。 我已经编写了一个遍历模板的递归函数,以构造一个带有每个要包含的节点名称的字符串切片。 我称这个函数如下

  • 在我的web应用程序中,我使用struts2和FreeMarker。区域设置是法语。在我的freemarker模板中,我在一个input元素中定义了jQuery ui,该元素的name属性指向对象的date属性。 问题是,在表单提交时,有时我会收到警告,说。作为响应,我可以看到消息这很奇怪,因为问题有时会发生,有时不会... 我尝试将中的设置为法语,这很有帮助,但仍有10%的时间可以看到这个问题。