git

package
v0.12.2 Latest Latest
Warning

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

Go to latest
Published: Jan 21, 2023 License: Apache-2.0 Imports: 36 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultSSHKeyExchangeAlgorithms = SupportedSSHKeyExchangeAlgorithms

List of default key exchange algorithms to use. We use those that are available by default, we can become more opinionated later on (when we support configuration of algorithms to use).

View Source
var SupportedSSHKeyExchangeAlgorithms = []string{
	"diffie-hellman-group1-sha1",
	"diffie-hellman-group14-sha1",
	"ecdh-sha2-nistp256",
	"ecdh-sha2-nistp384",
	"ecdh-sha2-nistp521",
	"curve25519-sha256@libssh.org",
	"diffie-hellman-group-exchange-sha1",
	"diffie-hellman-group-exchange-sha256",
}

List of all currently supported algorithms for SSH key exchange Unfortunately, crypto/ssh does not offer public constants or list for this.

Functions

func GetRepoHTTPClient

func GetRepoHTTPClient(repoURL string, insecure bool, creds Creds, proxyURL string) *http.Client

Returns a HTTP client object suitable for go-git to use using the following pattern:

  • If insecure is true, always returns a client with certificate verification turned off.
  • If one or more custom certificates are stored for the repository, returns a client with those certificates in the list of root CAs used to verify the server's certificate.
  • Otherwise (and on non-fatal errors), a default HTTP client is returned.

func IsCommitSHA

func IsCommitSHA(sha string) bool

IsCommitSHA returns whether or not a string is a 40 character SHA-1

func IsHTTPSURL

func IsHTTPSURL(url string) bool

IsHTTPSURL returns true if supplied URL is HTTPS URL

func IsHTTPURL added in v0.11.0

func IsHTTPURL(url string) bool

IsHTTPURL returns true if supplied URL is HTTP URL

func IsSSHURL

func IsSSHURL(url string) (bool, string)

IsSSHURL returns true if supplied URL is SSH URL

func IsTruncatedCommitSHA

func IsTruncatedCommitSHA(sha string) bool

IsTruncatedCommitSHA returns whether or not a string is a truncated SHA-1

func NormalizeGitURL

func NormalizeGitURL(repo string) string

NormalizeGitURL normalizes a git URL for purposes of comparison, as well as preventing redundant local clones (by normalizing various forms of a URL to a consistent location). Prefer using SameURL() over this function when possible. This algorithm may change over time and should not be considered stable from release to release

func SameURL

func SameURL(leftRepo, rightRepo string) bool

SameURL returns whether or not the two repository URLs are equivalent in location

func TestRepo

func TestRepo(repo string, creds Creds, insecure bool, enableLfs bool, proxy string) error

TestRepo tests if a repo exists and is accessible with the given credentials

Types

type Client

type Client interface {
	Root() string
	Init() error
	Fetch(revision string) error
	Checkout(revision string) error
	LsRefs() (*Refs, error)
	LsRemote(revision string) (string, error)
	LsFiles(path string) ([]string, error)
	LsLargeFiles() ([]string, error)
	CommitSHA() (string, error)
	RevisionMetadata(revision string) (*RevisionMetadata, error)
	VerifyCommitSignature(string) (string, error)
	Commit(pathSpec string, opts *CommitOptions) error
	Branch(sourceBranch string, targetBranch string) error
	Push(remote string, branch string, force bool) error
	Add(path string) error
	SymRefToBranch(symRef string) (string, error)
	Config(username string, email string) error
}

Client is a generic git client interface

func NewClient

func NewClient(rawRepoURL string, creds Creds, insecure bool, enableLfs bool, proxy string, opts ...ClientOpts) (Client, error)

func NewClientExt

func NewClientExt(rawRepoURL string, root string, creds Creds, insecure bool, enableLfs bool, proxy string, opts ...ClientOpts) (Client, error)

type ClientOpts added in v0.11.0

type ClientOpts func(c *nativeGitClient)

func WithCache added in v0.11.0

func WithCache(cache gitRefCache, loadRefFromCache bool) ClientOpts

WithCache sets git revisions cacher as well as specifies if client should tries to use cached resolved revision

func WithEventHandlers added in v0.11.0

func WithEventHandlers(handlers EventHandlers) ClientOpts

WithEventHandlers sets the git client event handlers

type CommitOptions added in v0.10.2

type CommitOptions struct {
	// CommitMessageText holds a short commit message (-m option)
	CommitMessageText string
	// CommitMessagePath holds the path to a file to be used for the commit message (-F option)
	CommitMessagePath string
	// SigningKey holds a GnuPG key ID used to sign the commit with (-S option)
	SigningKey string
	// SignOff specifies whether to sign-off a commit (-s option)
	SignOff bool
}

CommitOptions holds options for a git commit operation

type Creds

type Creds interface {
	Environ() (io.Closer, []string, error)
}

type EventHandlers added in v0.11.0

type EventHandlers struct {
	OnLsRemote func(repo string) func()
	OnFetch    func(repo string) func()
}

type GenericHTTPSCreds added in v0.11.0

type GenericHTTPSCreds interface {
	HasClientCert() bool
	GetClientCertData() string
	GetClientCertKey() string
	Environ() (io.Closer, []string, error)
}

func NewGitHubAppCreds added in v0.11.0

func NewGitHubAppCreds(appID int64, appInstallId int64, privateKey string, baseURL string, repoURL string, clientCertData string, clientCertKey string, insecure bool) GenericHTTPSCreds

NewGitHubAppCreds provide github app credentials

func NewHTTPSCreds

func NewHTTPSCreds(username string, password string, clientCertData string, clientCertKey string, insecure bool, proxy string) GenericHTTPSCreds

type GitHubAppCreds added in v0.11.0

type GitHubAppCreds struct {
	// contains filtered or unexported fields
}

GitHubAppCreds to authenticate as GitHub application

func (GitHubAppCreds) Environ added in v0.11.0

func (g GitHubAppCreds) Environ() (io.Closer, []string, error)

func (GitHubAppCreds) GetClientCertData added in v0.11.0

func (g GitHubAppCreds) GetClientCertData() string

func (GitHubAppCreds) GetClientCertKey added in v0.11.0

func (g GitHubAppCreds) GetClientCertKey() string

func (GitHubAppCreds) HasClientCert added in v0.11.0

func (g GitHubAppCreds) HasClientCert() bool

type HTTPSCreds

type HTTPSCreds struct {
	// contains filtered or unexported fields
}

HTTPS creds implementation

func (HTTPSCreds) Environ

func (c HTTPSCreds) Environ() (io.Closer, []string, error)

Get additional required environment variables for executing git client to access specific repository via HTTPS.

func (HTTPSCreds) GetClientCertData added in v0.11.0

func (c HTTPSCreds) GetClientCertData() string

func (HTTPSCreds) GetClientCertKey added in v0.11.0

func (c HTTPSCreds) GetClientCertKey() string

func (HTTPSCreds) HasClientCert added in v0.11.0

func (g HTTPSCreds) HasClientCert() bool

type NopCloser

type NopCloser struct {
}

nop implementation

func (NopCloser) Close

func (c NopCloser) Close() error

type NopCreds

type NopCreds struct {
}

func (NopCreds) Environ

func (c NopCreds) Environ() (io.Closer, []string, error)

type PublicKeysWithOptions added in v0.11.0

type PublicKeysWithOptions struct {
	KexAlgorithms []string
	gitssh.PublicKeys
}

PublicKeysWithOptions is an auth method for go-git's SSH client that inherits from PublicKeys, but provides the possibility to override some client options.

func (*PublicKeysWithOptions) ClientConfig added in v0.11.0

func (a *PublicKeysWithOptions) ClientConfig() (*ssh.ClientConfig, error)

ClientConfig returns a custom SSH client configuration

func (*PublicKeysWithOptions) Name added in v0.11.0

func (a *PublicKeysWithOptions) Name() string

Name returns the name of the auth method

func (*PublicKeysWithOptions) String added in v0.11.0

func (a *PublicKeysWithOptions) String() string

String returns the configured user and auth method name as string

type Refs

type Refs struct {
	Branches []string
	Tags     []string
}

this should match reposerver/repository/repository.proto/RefsList

type RevisionMetadata

type RevisionMetadata struct {
	Author  string
	Date    time.Time
	Tags    []string
	Message string
}

type SSHCreds

type SSHCreds struct {
	// contains filtered or unexported fields
}

SSH implementation

func NewSSHCreds

func NewSSHCreds(sshPrivateKey string, caPath string, insecureIgnoreHostKey bool) SSHCreds

func (SSHCreds) Environ

func (c SSHCreds) Environ() (io.Closer, []string, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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