Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jGit使用RevWalk获取RevCommit不会返回任何结果_Java_Git_Jgit - Fatal编程技术网

Java jGit使用RevWalk获取RevCommit不会返回任何结果

Java jGit使用RevWalk获取RevCommit不会返回任何结果,java,git,jgit,Java,Git,Jgit,我是jGit和Git的新手。我试图查询git存储库提交的历史记录,但我只想获得特定用户的提交。阅读我看到的文档,RevWalk将允许我在orther中添加RevFilters以限制搜索 首先,我使用Git对象及其log方法来列出提交,它工作得非常好。但是使用RevWalk,什么都不会发生 public static void main(String[] args) throws IOException, GitAPIException { FileRepositoryBuilder bu

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

首先,我使用Git对象及其log方法来列出提交,它工作得非常好。但是使用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());
    }

}
publicstaticvoidmain(字符串[]args)抛出IOException、GitAPIException{
FileRepositoryBuilder=新建FileRepositoryBuilder();
Repository Repository=builder.setGitDir(新文件(“/home/joan/testGit/testMockito/.git”))
.readEnvironment().findGitDir().build();
//这是可行的,但我得到了所有的承诺
Git-Git=新的Git(存储库);
Iterable log=git.log().call();
for(Iterator Iterator=log.Iterator();Iterator.hasNext();){
RevCommit rev=iterator.next();
System.out.println(rev.getAuthorIdent().getName());
System.out.println(rev.getFullMessage());
}
RevWalk walk=新的RevWalk(存储库);
for(Iterator Iterator=walk.Iterator();Iterator.hasNext();){
//它从未出现在这个街区
RevCommit rev=iterator.next();
System.out.println(rev.getAuthorIdent().getName());
System.out.println(rev.getFullMessage());
}
}
有什么建议吗?我做错什么了吗


谢谢。

为什么不直接使用
org.eclipse.jgit.api
中的
LogCommand

Git-Git=new-Git(db)

Iterable log=git.log().call()

然后,您可以根据返回的提交筛选作者。我还建议查看GitRective,它是JGit之上的一层。您可以学习如何使用它实现与JGit相关的事情:

你可以这样做:

PersonIdent person=新的PersonIdent(“克里斯”chris@chris.com");

filters.add(新AuthorFilter(person))


然后您可以调用
CommitFinder
。。。使用所需的筛选器…

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

例如,要使用当前存储库的
头启动
RevWalk
,请执行以下操作:


walk.markStart(walk.parseCommit(repository.resolve(“HEAD”))

谢谢凯文。你说得对,我已经添加了标题,并且我已经得到了提交列表。:)