mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-15 02:01:43 +03:00
repo: fix some go-git implementation
This commit is contained in:
parent
bde9375632
commit
d4f1d5659b
@ -4,9 +4,10 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/MichaelMure/git-bug/entity"
|
||||
"github.com/MichaelMure/git-bug/repository"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// Fetch retrieve updates from a remote
|
||||
|
@ -302,8 +302,8 @@ func (repo *GitRepo) RemoveRef(ref string) error {
|
||||
}
|
||||
|
||||
// ListRefs will return a list of Git ref matching the given refspec
|
||||
func (repo *GitRepo) ListRefs(refspec string) ([]string, error) {
|
||||
stdout, err := repo.runGitCommand("for-each-ref", "--format=%(refname)", refspec)
|
||||
func (repo *GitRepo) ListRefs(refPrefix string) ([]string, error) {
|
||||
stdout, err := repo.runGitCommand("for-each-ref", "--format=%(refname)", refPrefix)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"os"
|
||||
stdpath "path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@ -420,7 +421,7 @@ func (repo *GoGitRepo) RemoveRef(ref string) error {
|
||||
return repo.r.Storer.RemoveReference(plumbing.ReferenceName(ref))
|
||||
}
|
||||
|
||||
func (repo *GoGitRepo) ListRefs(refspec string) ([]string, error) {
|
||||
func (repo *GoGitRepo) ListRefs(refPrefix string) ([]string, error) {
|
||||
refIter, err := repo.r.References()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -428,9 +429,16 @@ func (repo *GoGitRepo) ListRefs(refspec string) ([]string, error) {
|
||||
|
||||
refs := make([]string, 0)
|
||||
|
||||
for ref, _ := refIter.Next(); ref != nil; {
|
||||
refs = append(refs, ref.String()) // TODO: Use format to search
|
||||
err = refIter.ForEach(func(ref *plumbing.Reference) error {
|
||||
if strings.HasPrefix(ref.Name().String(), refPrefix) {
|
||||
refs = append(refs, ref.Name().String())
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return refs, nil
|
||||
}
|
||||
|
||||
@ -454,10 +462,16 @@ func (repo *GoGitRepo) ListCommits(ref string) ([]Hash, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var commits []Hash // TODO: Implement refspec
|
||||
for commit, _ := commitIter.Next(); commit != nil; {
|
||||
var commits []Hash
|
||||
|
||||
err = commitIter.ForEach(func(commit *object.Commit) error {
|
||||
commits = append(commits, Hash(commit.Hash.String()))
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return commits, nil
|
||||
}
|
||||
|
||||
|
@ -164,11 +164,11 @@ func (r *mockRepoForTest) CopyRef(source string, dest string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *mockRepoForTest) ListRefs(refspec string) ([]string, error) {
|
||||
func (r *mockRepoForTest) ListRefs(refPrefix string) ([]string, error) {
|
||||
var keys []string
|
||||
|
||||
for k := range r.refs {
|
||||
if strings.HasPrefix(k, refspec) {
|
||||
if strings.HasPrefix(k, refPrefix) {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ type RepoData interface {
|
||||
RemoveRef(ref string) error
|
||||
|
||||
// ListRefs will return a list of Git ref matching the given refspec
|
||||
ListRefs(refspec string) ([]string, error)
|
||||
ListRefs(refPrefix string) ([]string, error)
|
||||
|
||||
// RefExist will check if a reference exist in Git
|
||||
RefExist(ref string) (bool, error)
|
||||
|
Loading…
Reference in New Issue
Block a user