如何用JGit确定哪些分支已合并为master?

时间:2014-10-30 04:10:10

标签: jgit

如何使用JGit确定哪些分支已合并为主分支?

我想做相当于普通的git命令:

git branch -a --merged

这在JGit中是否可行?

1 个答案:

答案 0 :(得分:5)

RevWalk::isMergedInto()可用于确定提交是否已合并到另一个提交中。也就是说,如果第一个参数中给出的提交是第二个给定提交的祖先,则isMergedInto返回true。

try( RevWalk revWalk = new RevWalk( repository ) ) {
  RevCommit masterHead = revWalk.parseCommit( repository.resolve( "refs/heads/master" );
  RevCommit otherHead = revWalk.parseCommit( repository.resolve( "refs/heads/other-branch" );
  if( revWalk.isMergedInto( otherHead, masterHead ) ) {
    ...
  }
}

要获取所有分支的列表,请使用ListBranchesCommand

List<Ref> branches = Git.wrap( repository ).listBranches().setListMode( ListMode.ALL ).call();