Skip to content

Commit aa3ac80

Browse files
authored
Merge pull request #332 from vmarkovtsev/master
Add siva ref fallback
2 parents 1f8e51e + a508c12 commit aa3ac80

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

internal/core/pipeline.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -485,19 +485,28 @@ func (pipeline *Pipeline) Commits(firstParent bool) ([]*object.Commit, error) {
485485
func (pipeline *Pipeline) HeadCommit() ([]*object.Commit, error) {
486486
repository := pipeline.repository
487487
head, err := repository.Head()
488-
if err != nil {
489-
if err == plumbing.ErrReferenceNotFound {
490-
refs, errr := repository.References()
491-
if errr != nil {
492-
return nil, errors.Wrap(errr, "unable to list the references")
488+
if err == plumbing.ErrReferenceNotFound {
489+
refs, errr := repository.References()
490+
if errr != nil {
491+
return nil, errors.Wrap(errr, "unable to list the references")
492+
}
493+
var refnames []string
494+
refByName := map[string]*plumbing.Reference{}
495+
err = refs.ForEach(func(ref *plumbing.Reference) error {
496+
refname := ref.Name().String()
497+
refnames = append(refnames, refname)
498+
refByName[refname] = ref
499+
if strings.HasPrefix(refname, "refs/heads/HEAD/") {
500+
head = ref
501+
return storer.ErrStop
493502
}
494-
err = refs.ForEach(func(ref *plumbing.Reference) error {
495-
if strings.HasPrefix(ref.Name().String(), "refs/heads/HEAD/") {
496-
head = ref
497-
return storer.ErrStop
498-
}
499-
return nil
500-
})
503+
return nil
504+
})
505+
if head == nil {
506+
sort.Strings(refnames)
507+
headName := refnames[len(refnames)-1]
508+
pipeline.l.Warnf("could not determine the HEAD, falling back to %s", headName)
509+
head = refByName[headName]
501510
}
502511
}
503512
if head == nil {

0 commit comments

Comments
 (0)