MCPcopy Create free account
hub / github.com/cli/cli / ParseRemoteTrackingRef

Function ParseRemoteTrackingRef

git/client.go:618–634  ·  view source on GitHub ↗

ParseRemoteTrackingRef parses a string of the form "refs/remotes/ / " into a RemoteTrackingBranch struct. If the string does not match this format, an error is returned. For now, we assume that refnames are of the format " / ", where the remote is a single path component

(s string)

Source from the content-addressed store, hash-verified

616//
617// When using this ref, git assumes it means `remote: foo` `branch: bar/baz`.
618func ParseRemoteTrackingRef(s string) (RemoteTrackingRef, error) {
619 prefix := "refs/remotes/"
620 if !strings.HasPrefix(s, prefix) {
621 return RemoteTrackingRef{}, fmt.Errorf("remote tracking branch must have format refs/remotes/<remote>/<branch> but was: %s", s)
622 }
623
624 refName := strings.TrimPrefix(s, prefix)
625 refNameParts := strings.SplitN(refName, "/", 2)
626 if len(refNameParts) != 2 {
627 return RemoteTrackingRef{}, fmt.Errorf("remote tracking branch must have format refs/remotes/<remote>/<branch> but was: %s", s)
628 }
629
630 return RemoteTrackingRef{
631 Remote: refNameParts[0],
632 Branch: refNameParts[1],
633 }, nil
634}
635
636// PushRevision gets the value of the @{push} revision syntax
637// An error here doesn't necessarily mean something is broken, but may mean that the @{push}

Callers 3

NewCreateContextFunction · 0.92
TestRemoteTrackingRefFunction · 0.85
PushRevisionMethod · 0.85

Calls 1

ErrorfMethod · 0.65

Tested by 1

TestRemoteTrackingRefFunction · 0.68