我需要找到具有提交的所有分支(标记)。在使用git命令的命令行界面上,可以使用git branch --contains <commit>命令。
如何使用go-git库来做这样的事情?
发布于 2019-08-10 04:01:24
我试着做一个解决方案,得到了这样的结果:
func FindBranchesByCoommit(r *git.Repository, c *object.Commit) (branches []*plumbing.Reference, err error) {
brIt, err := r.Branches()
if err != nil {
return
}
defer brIt.Close()
if err := brIt.ForEach(func(ref *plumbing.Reference) error {
com, err := r.CommitObject(ref.Hash())
if err != nil {
return err
}
comIt, err := r.Log(&git.LogOptions{From: com.Hash})
if err != nil {
return err
}
defer comIt.Close()
for {
if com, err := comIt.Next(); err == nil {
if c.Hash == com.Hash {
branches = append(branches, ref)
break
}
} else if err == io.EOF {
break
} else {
return err
}
}
return nil
}); err != nil {
return nil, err
}
return
}https://stackoverflow.com/questions/57433688
复制相似问题