Documentation
¶
Index ¶
- Constants
- func Configured(ctx context.Context) bool
- func DeriveCheckpointURL(pushRemoteURL string, config *settings.CheckpointRemoteConfig) (string, error)
- func ExtractOwnerFromRemoteURL(rawURL string) string
- func Fetch(ctx context.Context, opts FetchOptions) ([]byte, error)
- func FetchBlobs(ctx context.Context, remote string, hashes []string) error
- func FetchURL(ctx context.Context) (string, error)
- func GetRemoteURL(ctx context.Context, remoteName string) (string, error)
- func IsURL(target string) bool
- func LsRemote(ctx context.Context, remote string, patterns ...string) ([]byte, error)
- func LsRemoteInDir(ctx context.Context, dir, remote string, patterns ...string) ([]byte, error)
- func PushURL(ctx context.Context, pushRemoteName string) (string, bool, error)
- func RedactURL(rawURL string) string
- func ResolveFetchTarget(ctx context.Context, target string) (string, error)
- type FetchOptions
- type Info
- type PushResult
Constants ¶
const ( ProtocolSSH = gitremote.ProtocolSSH ProtocolHTTPS = gitremote.ProtocolHTTPS )
const CheckpointTokenEnvVar = "ENTIRE_CHECKPOINT_TOKEN"
CheckpointTokenEnvVar is the environment variable for providing an access token used to authenticate git push/fetch operations for checkpoint branches. The token is injected as an HTTP Basic Authorization header per RFC 7617: the credentials string "x-access-token:<token>" is base64-encoded and sent as "Authorization: Basic <base64>". This matches GitHub's token auth for Git HTTPS. SSH remotes ignore the token (with a warning).
Variables ¶
This section is empty.
Functions ¶
func Configured ¶
Configured reports whether a structured checkpoint_remote is configured.
func DeriveCheckpointURL ¶
func DeriveCheckpointURL(pushRemoteURL string, config *settings.CheckpointRemoteConfig) (string, error)
func ExtractOwnerFromRemoteURL ¶
ExtractOwnerFromRemoteURL extracts the owner component from a git remote URL.
func Fetch ¶
func Fetch(ctx context.Context, opts FetchOptions) ([]byte, error)
Fetch runs git fetch with checkpoint token injection and optional filtered fetches (--filter=blob:none when settings enable it). GIT_TERMINAL_PROMPT=0 is always set.
Callers that pass a remote name (e.g., "origin") and want filtered fetches to resolve the name to a URL (to avoid persisting promisor settings) should call ResolveFetchTarget first and pass the resolved target as opts.Remote.
func FetchBlobs ¶
FetchBlobs fetches specific objects (typically blobs) by hash from a remote. Unlike Fetch, this never applies --filter=blob:none (which would be contradictory — the point is to download specific blobs) and always uses --no-write-fetch-head to avoid polluting FETCH_HEAD.
The remote should be a URL (not a remote name) to avoid persisting promisor settings onto the named remote. Use FetchURL to obtain the URL.
func FetchURL ¶
FetchURL returns the effective checkpoint fetch URL for the current repository. If strategy_options.checkpoint_remote is configured, the returned URL is derived from the origin remote's protocol/host and the configured checkpoint repo. Otherwise, the origin remote URL is returned directly.
If ENTIRE_CHECKPOINT_TOKEN is set and a checkpoint remote is configured, HTTPS is forced so the token can be used even when origin is configured via SSH.
func GetRemoteURL ¶
GetRemoteURL returns the URL configured for the named git remote.
func LsRemote ¶
LsRemote runs git ls-remote with token injection. GIT_TERMINAL_PROMPT=0 is always set. Returns stdout only.
func LsRemoteInDir ¶
LsRemoteInDir is like LsRemote but runs in a specific directory.
func PushURL ¶
PushURL returns the effective checkpoint push URL for the current repository. Unlike FetchURL:
- it derives protocol from the requested push remote, not always origin
- it skips checkpoint remote use when the push remote owner differs from the configured checkpoint remote owner
If ENTIRE_CHECKPOINT_TOKEN is set, HTTPS is forced so the token can be used even when the push remote is configured via SSH.
The boolean return value reports whether a dedicated checkpoint_remote is configured and should be used for push. When false, the returned URL is the repository's origin URL as a fallback.
func ResolveFetchTarget ¶
ResolveFetchTarget returns the git fetch target to use. When filtered fetches are enabled, configured remotes are resolved to their URL so git does not persist promisor settings onto the remote name.
Types ¶
type FetchOptions ¶
type FetchOptions struct {
Remote string // remote name or URL (required)
RefSpecs []string // one or more refspecs / object hashes
Shallow bool // adds --depth=1
NoTags bool // adds --no-tags
NoFilter bool // when true, skips --filter=blob:none even if filtered fetches are enabled
Dir string // working directory (empty = CWD)
ExtraArgs []string // additional flags before remote (e.g., "--no-write-fetch-head")
}
FetchOptions configures a git fetch operation.
type PushResult ¶
type PushResult struct {
Output string
}
PushResult holds raw porcelain output from git push.