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

Method fetchAndUpdateReferences

repository.go:1065–1103  ·  view source on GitHub ↗
(
	ctx context.Context, o *FetchOptions, ref plumbing.ReferenceName,
)

Source from the content-addressed store, hash-verified

1063}
1064
1065func (r *Repository) fetchAndUpdateReferences(
1066 ctx context.Context, o *FetchOptions, ref plumbing.ReferenceName,
1067) (*plumbing.Reference, error) {
1068
1069 if err := o.Validate(); err != nil {
1070 return nil, err
1071 }
1072
1073 remote, err := r.Remote(o.RemoteName)
1074 if err != nil {
1075 return nil, err
1076 }
1077
1078 objsUpdated := true
1079 remoteRefs, err := remote.fetch(ctx, o)
1080 if err == NoErrAlreadyUpToDate {
1081 objsUpdated = false
1082 } else if err == packfile.ErrEmptyPackfile {
1083 return nil, ErrFetching
1084 } else if err != nil {
1085 return nil, err
1086 }
1087
1088 resolvedRef, err := expand_ref(remoteRefs, ref)
1089 if err != nil {
1090 return nil, err
1091 }
1092
1093 refsUpdated, err := r.updateReferences(remote.c.Fetch, resolvedRef)
1094 if err != nil {
1095 return nil, err
1096 }
1097
1098 if !objsUpdated && !refsUpdated {
1099 return nil, NoErrAlreadyUpToDate
1100 }
1101
1102 return resolvedRef, nil
1103}
1104
1105func (r *Repository) updateReferences(spec []config.RefSpec,
1106 resolvedRef *plumbing.Reference) (updated bool, err error) {

Callers 1

cloneMethod · 0.95

Calls 5

RemoteMethod · 0.95
updateReferencesMethod · 0.95
expand_refFunction · 0.85
fetchMethod · 0.80
ValidateMethod · 0.45

Tested by

no test coverage detected