Skip to content

Commit 7018a03

Browse files
authored
Merge branch 'master' into gopkg
2 parents 7992eb7 + fe8ac2b commit 7018a03

File tree

5 files changed

+67
-17
lines changed

5 files changed

+67
-17
lines changed

commits.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,7 @@ func (i *commitIter) loadNextRef() (err error) {
229229
return err
230230
}
231231

232-
if i.ref.Type() != plumbing.HashReference {
233-
i.ref = nil
234-
continue
235-
}
236-
237-
obj, err := i.repo.Object(plumbing.AnyObject, i.ref.Hash())
232+
ignored, err := isIgnoredReference(i.repo.Repository, i.ref)
238233
if err != nil {
239234
if i.skipGitErrors {
240235
continue
@@ -243,7 +238,7 @@ func (i *commitIter) loadNextRef() (err error) {
243238
return err
244239
}
245240

246-
if obj.Type() != plumbing.CommitObject {
241+
if ignored {
247242
continue
248243
}
249244

integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ func TestMissingHeadRefs(t *testing.T) {
594594

595595
rows, err := sql.RowIterToRows(iter)
596596
require.NoError(err)
597-
require.Len(rows, 56)
597+
require.Len(rows, 54)
598598
}
599599

600600
func BenchmarkQueries(b *testing.B) {

ref_commits.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,16 @@ func (i *refCommitsRowIter) next() (sql.Row, error) {
306306
return nil, err
307307
}
308308

309-
if ref.Type() != plumbing.HashReference {
309+
ignored, err := isIgnoredReference(i.repo.Repository, ref)
310+
if err != nil {
311+
if i.skipGitErrors {
312+
continue
313+
}
314+
315+
return nil, err
316+
}
317+
318+
if ignored {
310319
continue
311320
}
312321
} else {

references.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"io"
77
"strings"
88

9+
git "gopkg.in/src-d/go-git.v4"
910
"gopkg.in/src-d/go-mysql-server.v0/sql"
1011

1112
"gopkg.in/src-d/go-git.v4/plumbing"
@@ -299,7 +300,16 @@ func (i *refRowIter) next() (sql.Row, error) {
299300
return nil, err
300301
}
301302

302-
if o.Type() != plumbing.HashReference {
303+
ignored, err := isIgnoredReference(i.repo.Repository, o)
304+
if err != nil {
305+
if i.skipGitErrors {
306+
continue
307+
}
308+
309+
return nil, err
310+
}
311+
312+
if ignored {
303313
continue
304314
}
305315

@@ -340,3 +350,16 @@ func referenceToRow(repositoryID string, c *plumbing.Reference) sql.Row {
340350
hash,
341351
)
342352
}
353+
354+
func isIgnoredReference(repo *git.Repository, ref *plumbing.Reference) (bool, error) {
355+
if ref.Type() != plumbing.HashReference {
356+
return true, nil
357+
}
358+
359+
obj, err := repo.Object(plumbing.AnyObject, ref.Hash())
360+
if err != nil {
361+
return false, err
362+
}
363+
364+
return obj.Type() != plumbing.CommitObject, nil
365+
}

squash_iterator.go

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,16 @@ func (i *squashRefIter) Advance() error {
489489
}
490490
}
491491

492-
if ref.Type() != plumbing.HashReference {
492+
ignored, err := isIgnoredReference(i.repo.Repository, ref)
493+
if err != nil {
494+
if i.skipGitErrors {
495+
continue
496+
}
497+
498+
return err
499+
}
500+
501+
if ignored {
493502
continue
494503
}
495504

@@ -734,11 +743,16 @@ func (i *squashRepoRefsIter) Advance() error {
734743
}
735744
}
736745

737-
if ref.Type() != plumbing.HashReference {
738-
logrus.WithFields(logrus.Fields{
739-
"type": ref.Type(),
740-
"ref": ref.Name(),
741-
}).Debug("ignoring reference, it's not a hash reference")
746+
ignored, err := isIgnoredReference(i.repos.Repository().Repository, ref)
747+
if err != nil {
748+
if i.skipGitErrors {
749+
continue
750+
}
751+
752+
return err
753+
}
754+
755+
if ignored {
742756
continue
743757
}
744758

@@ -876,7 +890,16 @@ func (i *squashRemoteRefsIter) Advance() error {
876890
}
877891
}
878892

879-
if ref.Type() != plumbing.HashReference {
893+
ignored, err := isIgnoredReference(i.Repository().Repository, ref)
894+
if err != nil {
895+
if i.skipGitErrors {
896+
continue
897+
}
898+
899+
return err
900+
}
901+
902+
if ignored {
880903
continue
881904
}
882905

0 commit comments

Comments
 (0)