gpt4 book ai didi

java - jGit 使用 RevWalk 获取 RevCommit 不返回任何内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:53:31 25 4
gpt4 key购买 nike

我是 jGit 和 Git 的新手。我正在尝试查询 git 存储库的历史提交,但我只想获取特定用户的提交。阅读文档后,我看到 RevWalk 允许我添加 RevFilters 以限制搜索。

首先,我使用一个 Git 对象及其日志方法来列出提交,并且效果很好。但是使用 RevWalk,什么也不会发生。

public static void main(String[] args) throws IOException, GitAPIException {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.setGitDir(new File("/home/joan/testGit/testMockito/.git"))
.readEnvironment().findGitDir().build();

//This works but I get all the commits
Git git = new Git(repository);
Iterable<RevCommit> log = git.log().call();
for (Iterator<RevCommit> iterator = log.iterator(); iterator.hasNext();) {
RevCommit rev = iterator.next();
System.out.println(rev.getAuthorIdent().getName());
System.out.println(rev.getFullMessage());
}

RevWalk walk = new RevWalk(repository);
for (Iterator<RevCommit> iterator = walk.iterator(); iterator.hasNext();) {
//It never cames in this block

RevCommit rev = iterator.next();
System.out.println(rev.getAuthorIdent().getName());
System.out.println(rev.getFullMessage());
}

}

有什么建议吗?我做错了什么吗?

谢谢。

最佳答案

您需要在迭代之前通过调用markStart 将提交添加到RevWalk

例如,使用当前存储库的 HEAD 提交启动 RevWalk:

walk.markStart(walk.parseCommit(repository.resolve("HEAD")));

关于java - jGit 使用 RevWalk 获取 RevCommit 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11869412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com