【问题标题】:How to resolve commit into branches?如何解决提交到分支?
【发布时间】:2019-08-09 16:02:37
【问题描述】:

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

如何使用go-git 库来处理类似的事情?

【问题讨论】:

    标签: go-git


    【解决方案1】:

    我试图提出一个解决方案并得到了这个:

    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
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 2018-10-11
      • 2015-10-04
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多