首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将提交分解为分支?

如何将提交分解为分支?
EN

Stack Overflow用户
提问于 2019-08-10 00:02:38
回答 1查看 25关注 0票数 0

我需要找到具有提交的所有分支(标记)。在使用git命令的命令行界面上,可以使用git branch --contains <commit>命令。

如何使用go-git库来做这样的事情?

EN

回答 1

Stack Overflow用户

发布于 2019-08-10 04:01:24

我试着做一个解决方案,得到了这样的结果:

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57433688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档