遍历所有分支

时间:2014-07-01 23:06:19

标签: java git github branch jgit

我想用JGit获取特定分支的所有提交。
我们以test-kitchen为例。它有5个分支:

  • 规格覆盖
  • 遗留-0.7
  • sethvargo /文档
  • sethvargo / full_chef_path

我如何仅通过spec-coverage进行迭代?

在这个例子中,我将获得所有可用的分支和提交。但我需要选择我想要提交的分支。

摘录:

// branch
for (Ref branch : git.branchList().setListMode(ListMode.REMOTE).call()){
    git.checkout().setName(branch.getName()).call();
    System.out.println("Branch: " + branch.getName());

    // commits
    Iterable<RevCommit> commits = git.log().all().call();
    for (RevCommit commit : commits) {
        System.out.println(commit);
        // doing something with the commits...
    }
}

1 个答案:

答案 0 :(得分:0)

根据您的描述,您尝试执行相当于“git log”的操作,jgit-cookbook有一个片段,显示如何迭代所有提交,但在这种情况下,您可以选择列出通过使用add()而不是all()只对分支上的提交进行迭代的所有提交:

    Iterable<RevCommit> logs = new Git(repository).log()
            .add(repository.resolve("remotes/origin/checkoutbranch"))
            .call();
    for (RevCommit rev : logs) {
        ...
    }

我现在还更新了jgit-cookbook片段,以显示在log()上使用all()的区别。