git

package
v0.16.0-alpha.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2026 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const ProxyCABundleEnvVar = "PROXY_CA_BUNDLE"

ProxyCABundleEnvVar is the name of the environment variable that holds the PEM-encoded CA certificate used to trust HTTPS proxies with custom or self-signed certificates. The value is appended to the system cert pool so that well-known public CA certificates remain trusted.

Variables

Functions

func GetAuthFromSecret

func GetAuthFromSecret(url string, creds *corev1.Secret, knownHosts string) (transport.AuthMethod, error)

GetAuthFromSecret returns the AuthMethod calculated from the given secret, setting known hosts if needed. Known hosts are sourced from the creds, if provided there. Otherwise, they will be sourced from the provided knownHosts if non-empty. The credentials secret is expected to be either basic-auth or ssh-auth (with extra known_hosts data option)

func GetHTTPClientFromSecret

func GetHTTPClientFromSecret(creds *corev1.Secret, bundleCA []byte, insecureTLSVerify bool, timeout time.Duration) (*http.Client, error)

GetHTTPClientFromSecret returns a HTTP client filled from the information in the given secret and optional CABundle and insecureTLSVerify

func ProxyOptsFromEnvironment

func ProxyOptsFromEnvironment(repoURL string) transport.ProxyOptions

ProxyOptsFromEnvironment reads the standard HTTP_PROXY / HTTPS_PROXY / NO_PROXY environment variables and returns a transport.ProxyOptions value ready to be embedded in go-git CloneOptions or ListOptions.

Why this is necessary: go-git's HTTP transport uses http.DefaultTransport, which already honors HTTP_PROXY / HTTPS_PROXY natively. However, go-git's SSH transport only routes through a proxy when ProxyOptions.URL is non-empty — it never reads the proxy env vars itself. Without wiring ProxyOptions the registered httpConnectDialer would never be invoked for SSH repos.

Proxy selection and NO_PROXY matching are delegated to golang.org/x/net/http/httpproxy, which follows the same rules as net/http. SSH and scp-style repos are looked up as https:// because SSH traffic is tunnelled through a CONNECT proxy the same way HTTPS is. Both HTTP_PROXY and HTTPS_PROXY work; HTTPS_PROXY is checked first for SSH URLs.

Types

type Fetch

type Fetch struct {
	KnownHosts KnownHostsGetter
}

func NewFetch

func NewFetch() *Fetch

func (*Fetch) LatestCommit

func (f *Fetch) LatestCommit(ctx context.Context, gitrepo *v1alpha1.GitRepo, client client.Client) (string, error)

type GoGitRemoteLister

type GoGitRemoteLister struct {
	URL             string
	Auth            transport.AuthMethod
	CABundle        []byte
	InsecureSkipTLS bool
	ProxyOptions    transport.ProxyOptions
}

GoGitRemoteLister implements the RemoteLister interface using the go-git library

func (*GoGitRemoteLister) List

func (g *GoGitRemoteLister) List(appendPeeled bool) ([]*RemoteRef, error)

type KnownHostsGetter added in v0.10.11

type KnownHostsGetter interface {
	GetWithSecret(ctx context.Context, c client.Client, secret *corev1.Secret) (string, error)
	IsStrict() bool
}

type Remote

type Remote struct {
	Lister  RemoteLister
	URL     string
	Options *options
}

func NewRemote

func NewRemote(url string, opts *options) (*Remote, error)

func (*Remote) LatestBranchCommit

func (r *Remote) LatestBranchCommit(ctx context.Context, branch string) (string, error)

LatestBranchCommit returns the latest commit for the given branch

func (*Remote) RevisionCommit

func (r *Remote) RevisionCommit(revision string) (string, error)

RevisionCommit returns the commit for the given revision

type RemoteLister

type RemoteLister interface {
	// List returns a generic RemoteRef slice of remote references in a git repository
	List(appendPeeled bool) ([]*RemoteRef, error)
}

type RemoteRef

type RemoteRef struct {
	Name string
	Hash string
}

RemoteRef represents a remote reference is a git repository

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL