2014-07-01 94 views
0

我想要使用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... 
    } 
} 
+0

定义“迭代”?向后走向提交历史记录?多远? –

+0

例如获取特定分支的所有提交。 – user1170330

回答

0

根据您的描述您正在尝试做的“混帐日志相当于”时,jgit-cookbook有一个片段,展示了如何遍历所有提交你这样做,但在这种情况下,您可以选择通过添加(),而不是所有的()只在提交的分支迭代列出分支的所有提交:

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

现在我也更新了jgit-食谱片段来显示在log()上使用all()的差异。

+0

当我用例如'spec-coverage'替换'checkoutbranch'时,我会遇到'Caught Exception:Ref spec-coverage can not be resolved'。 我正在一个远程分支上工作。我必须设置其他参数吗? – user1170330

+0

对于远程分支,您可能需要首先让它们在本地可用,但据我看到,jgit中的远程命令在这里功能不够强大......不知道命令行git甚至可以做到这一点吗? – centic

+0

'setListMode(ListMode.REMOTE)'或类似的东西呢? – user1170330