go-git - 如何解决提交到分支?
问题描述
我需要找到所有带有提交的分支(标签)。在使用命令的 CLIgit
上,可以使用git branch --contains <commit>
命令。
go-git
如何使用库做类似的事情?
解决方案
我试图提出一个解决方案并得到了这个:
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
}
推荐阅读
- r - 为什么for循环中的分组功能不起作用?
- sed - 为以另一个模式开头的每一行替换一个模式
- python - Mathplotlib 根据对象 ID 设置绘图颜色
- go-gorm - ERR:使用结构查询时where子句中的未知列
- c++ - 连接到 Internet 时由 Windows 发送的事件
- api - 在 RxJs 中获取更多数据
- php - phppresentation溢出表问题
- neo4j - 为标签/关系添加描述或评论
- wolfram-mathematica - 在 Mathematica 中为 ListStreamPlot 创建数据
- sql-server - Hangfire 重复性工作中断