func (r *Repository) Branches(opt vcs.BranchesOptions) ([]*vcs.Branch, error) { if opt.ContainsCommit != "" { return nil, fmt.Errorf("vcs.BranchesOptions.ContainsCommit option not implemented") } r.editLock.RLock() defer r.editLock.RUnlock() refs, err := r.u.NewReferenceIterator() if err != nil { return nil, err } var bs []*vcs.Branch for { ref, err := refs.Next() if isErrIterOver(err) { break } if err != nil { return nil, err } if ref.IsBranch() { bs = append(bs, &vcs.Branch{Name: ref.Shorthand(), Head: vcs.CommitID(ref.Target().String())}) } } sort.Sort(vcs.Branches(bs)) return bs, nil }
func (r *Repository) Branches(opt vcs.BranchesOptions) ([]*vcs.Branch, error) { if opt.ContainsCommit != "" { return nil, fmt.Errorf("vcs.BranchesOptions.ContainsCommit option not implemented") } bs := make([]*vcs.Branch, len(r.branchHeads.IdByName)) i := 0 for name, id := range r.branchHeads.IdByName { bs[i] = &vcs.Branch{Name: name, Head: vcs.CommitID(id)} i++ } sort.Sort(vcs.Branches(bs)) return bs, nil }