0

有没有办法获得与原生 git 命令相同的信息

git branch --merged <sha>

通过 Ruby 的Rugged libgit2 绑定?

4

1 回答 1

2

git commit 所做的是查看每个分支并检查分支与您给出的提交(或 HEAD,如果没有)之间的合并基础是否对应于分支之一。

如果它们匹配,则合并;如果他们不这样做,那就不是。你可以很容易地在 ruby​​ 中完成这个循环

repo.branches.each(:local) # look only at local branches
.map { |b|
  tgt = b.resolve.target # look at what the branch is pointing to
  # and check if the target commit is included in the history of HEAD
  merged = repo.merge_base(repo.head.target, tgt) == tgt.oid
  [b.name, merged]
} # this will give a list with the name and whether the branch is merged
.keep_if { |name, merged| merged } # keep only the ones which are merged
.map(&:first) # get the name

您可以merged_list << b.name if merged在第一个块中放置一个并将其挂起each,但我喜欢编写数据流。

您还可以根据需要更改是否对分支使用或两者都:local使用。:remote您还可以更改repo.head.target为您想要比较的任何 id。

于 2014-11-08T14:17:04.523 回答