MCPcopy
hub / github.com/go-git/go-git / doCalculateRefs

Function doCalculateRefs

remote.go:994–1055  ·  view source on GitHub ↗
(
	s config.RefSpec,
	remoteRefs storer.ReferenceStorer,
	refs memory.ReferenceStorage,
)

Source from the content-addressed store, hash-verified

992}
993
994func doCalculateRefs(
995 s config.RefSpec,
996 remoteRefs storer.ReferenceStorer,
997 refs memory.ReferenceStorage,
998) ([]*plumbing.Reference, error) {
999 var refList []*plumbing.Reference
1000
1001 if s.IsExactSHA1() {
1002 ref := plumbing.NewHashReference(s.Dst(""), plumbing.NewHash(s.Src()))
1003
1004 refList = append(refList, ref)
1005 return refList, refs.SetReference(ref)
1006 }
1007
1008 var matched bool
1009 onMatched := func(ref *plumbing.Reference) error {
1010 if ref.Type() == plumbing.SymbolicReference {
1011 target, err := storer.ResolveReference(remoteRefs, ref.Name())
1012 if err != nil {
1013 return err
1014 }
1015
1016 ref = plumbing.NewHashReference(ref.Name(), target.Hash())
1017 }
1018
1019 if ref.Type() != plumbing.HashReference {
1020 return nil
1021 }
1022
1023 matched = true
1024 refList = append(refList, ref)
1025 return refs.SetReference(ref)
1026 }
1027
1028 var ret error
1029 if s.IsWildcard() {
1030 iter, err := remoteRefs.IterReferences()
1031 if err != nil {
1032 return nil, err
1033 }
1034 ret = iter.ForEach(func(ref *plumbing.Reference) error {
1035 if !s.Match(ref.Name()) {
1036 return nil
1037 }
1038
1039 return onMatched(ref)
1040 })
1041 } else {
1042 var resolvedRef *plumbing.Reference
1043 src := s.Src()
1044 resolvedRef, ret = expand_ref(remoteRefs, plumbing.ReferenceName(src))
1045 if ret == nil {
1046 ret = onMatched(resolvedRef)
1047 }
1048 }
1049
1050 if !matched && !s.IsWildcard() {
1051 return nil, NoMatchingRefSpecError{refSpec: s}

Callers 1

calculateRefsFunction · 0.85

Calls 15

NewHashReferenceFunction · 0.92
NewHashFunction · 0.92
ResolveReferenceFunction · 0.92
ReferenceNameTypeAlias · 0.92
expand_refFunction · 0.85
IsExactSHA1Method · 0.80
DstMethod · 0.80
SrcMethod · 0.80
IsWildcardMethod · 0.80
SetReferenceMethod · 0.65
TypeMethod · 0.65
NameMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…