Skip to content

Commit 80dd334

Browse files
committed
gitbase: ignore missing HEAD references
Signed-off-by: Miguel Molina <[email protected]>
1 parent e6ad89b commit 80dd334

File tree

3 files changed

+55
-5
lines changed

3 files changed

+55
-5
lines changed

integration_test.go

+27
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package gitbase_test
22

33
import (
44
"context"
5+
"os"
6+
"path/filepath"
57
"testing"
68

79
"github.com/src-d/gitbase/internal/rule"
@@ -278,6 +280,31 @@ func queryResults(
278280
return rows
279281
}
280282

283+
func TestMissingHeadRefs(t *testing.T) {
284+
require := require.New(t)
285+
286+
path := filepath.Join(
287+
os.Getenv("GOPATH"),
288+
"src", "github.com", "src-d", "gitbase",
289+
"_testdata",
290+
)
291+
292+
pool := gitbase.NewRepositoryPool()
293+
require.NoError(pool.AddSivaDir(path))
294+
295+
engine := sqle.New()
296+
engine.AddDatabase(gitbase.NewDatabase("foo"))
297+
298+
session := gitbase.NewSession(pool)
299+
ctx := sql.NewContext(context.TODO(), sql.WithSession(session))
300+
_, iter, err := engine.Query(ctx, "SELECT * FROM refs")
301+
require.NoError(err)
302+
303+
rows, err := sql.RowIterToRows(iter)
304+
require.NoError(err)
305+
require.Len(rows, 56)
306+
}
307+
281308
func BenchmarkQueries(b *testing.B) {
282309
queries := []struct {
283310
name string

iterator.go

+18-3
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,11 @@ func (i *refIter) New(ctx *sql.Context, repo *Repository) (ChainableIter, error)
355355

356356
head, err := repo.Repo.Head()
357357
if err != nil {
358-
return nil, err
358+
if err != plumbing.ErrReferenceNotFound {
359+
return nil, err
360+
}
361+
362+
logrus.WithField("repo", repo.ID).Debug("unable to get HEAD of repository")
359363
}
360364

361365
return &refIter{
@@ -489,7 +493,13 @@ func (i *repoRefsIter) Advance() error {
489493

490494
i.head, err = i.repos.Repo().Repo.Head()
491495
if err != nil {
492-
return err
496+
if err != plumbing.ErrReferenceNotFound {
497+
return err
498+
}
499+
500+
logrus.WithField("repo", i.repos.Repo().ID).
501+
Debug("unable to get HEAD of repository")
502+
continue
493503
}
494504
}
495505

@@ -616,7 +626,12 @@ func (i *remoteRefsIter) Advance() error {
616626

617627
i.head, err = i.repo.Head()
618628
if err != nil {
619-
return err
629+
if err != plumbing.ErrReferenceNotFound {
630+
return err
631+
}
632+
633+
logrus.WithField("repo", i.remotes.Remote().RepoID).
634+
Debug("unable to get HEAD of repository")
620635
}
621636
}
622637

references.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,11 @@ func (i *referenceIter) NewIterator(repo *Repository) (RowRepoIter, error) {
127127

128128
head, err := repo.Repo.Head()
129129
if err != nil {
130-
return nil, err
130+
if err != plumbing.ErrReferenceNotFound {
131+
return nil, err
132+
}
133+
134+
logrus.WithField("repo", repo.ID).Debug("unable to get HEAD of repository")
131135
}
132136

133137
return &referenceIter{
@@ -190,7 +194,11 @@ func (i *filteredReferencesIter) NewIterator(repo *Repository) (RowRepoIter, err
190194

191195
head, err := repo.Repo.Head()
192196
if err != nil {
193-
return nil, err
197+
if err != plumbing.ErrReferenceNotFound {
198+
return nil, err
199+
}
200+
201+
logrus.WithField("repo", repo.ID).Debug("unable to get HEAD of repository")
194202
}
195203

196204
return &filteredReferencesIter{

0 commit comments

Comments
 (0)