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

Bri*_*ent 3 jgit

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

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

git branch -a --merged
Run Code Online (Sandbox Code Playgroud)

这在JGit中可行吗?

Rüd*_*ann 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 ) ) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

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

List<Ref> branches = Git.wrap( repository ).listBranches().setListMode( ListMode.ALL ).call();
Run Code Online (Sandbox Code Playgroud)