jGit使用RevWalk来获取RevCommit什么都不返回

jom*_*ora 6 java git jgit

我是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());
    }

}
Run Code Online (Sandbox Code Playgroud)

有什么建议?难道我做错了什么?

谢谢.

Kev*_*cki 10

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

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

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