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

jgit遍历来自特定分支的提交内容

慕意致
2023-03-14

如何使用jgit遍历来自特定分支的特定提交的所有内容?

ObjectId commitId = repository.resolve(currentCommit.getCommitHash());
RevWalk revWalk = new RevWalk(repository);
RevCommit commit = revWalk.parseCommit(commitId);
RevTree tree = commit.getTree();
TreeWalk treeWalk = new TreeWalk(repository);
treeWalk.addTree(tree);
treeWalk.setRecursive(true);
treeWalk.setFilter(PathFilter.create(currentPath));
if (!treeWalk.next()) {
    throw new IllegalStateException(
            "Did not find expected file README.md");
}

这段代码从提交中检索一个特殊文件,但我希望遍历提交的所有内容。

共有1个答案

芮祺
2023-03-14

看到这个答案,它列出了文件和文件夹。您可以使用 setRecursive(true) 并在只对文件路径感兴趣时省略 isSubtree 分支。

 类似资料:
  • 我正在尝试使用JGit来获取特定于分支的提交日志,因为它被创建。我在论坛上发现了几篇听起来像是在描述这一点的帖子,但它们似乎都返回了分支和之前的所有内容。 我基本上想用JGit模拟这个git命令 这正是我想要的。

  • 我有一个新克隆的存储库的SHA-1。我要这个SHA-1的作者缩进。 所以我需要使用RevWalk并迭代整个存储库?或者是否有 方法或其他代码可用于获取 或其他具有 PersonIdent 的对象? 我尝试了什么:

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

  • 我需要将提交的内容存储在字符串中,这将是从例如master到最新提交的差异。 如何使用JGit显示提交之间的更改底部答案与我想要的非常相似 这是链接中的代码 格式()方法是无效的,似乎没有办法返回字符串或某种输出流。 我希望会有一些类似于 我知道这在库中不存在,但是必须有一些东西可以将提交的内容放入可以转换为字符串的内容中。

  • 我想使用JGit获得存储库中两次修订(散列)之间的提交列表。 我不知道提交(开始提交哈希,结束提交哈希)是在一个分支中还是在不同的分支中。 我知道如何从JGit中的提交开始遍历树。 我的问题:我是必须在存储库的所有分支中查找提交散列,还是可以像这样只使用< code > Respository::resolve(): 并确保我将同时找到提交开始和结束?

  • 问题内容: 在Flask 0.8中,我知道我可以使用来访问单个表单域form.fieldname.data,但是有一种简单的方法可以遍历所有表单域吗?我正在构建一个电子邮件正文,我想遍历所有字段并为每个字段创建一个字段名/值条目,而不是通过命名每个字段并附加来手动创建它。 问题答案: 你可以遍历表单数据: 你可以遍历所有表单字段: