git

package module
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2024 License: Apache-2.0 Imports: 10 Imported by: 15

Documentation

Index

Constants

View Source
const (
	// HashTypeSHA1 is the SHA1 hash algorithm.
	HashTypeSHA1 = "sha1"
	// HashTypeUnknown is an unknown hash algorithm.
	HashTypeUnknown = "<unknown>"
)
View Source
const (
	DefaultRemote            = "origin"
	DefaultBranch            = "master"
	DefaultPublicKeyAuthUser = "git"
)

Variables

View Source
var (
	ErrNoGitRepository = errors.New("no git repository")
	ErrNoStagedFiles   = errors.New("no staged files")
)
View Source
var HostKeyAlgos []string

HostKeyAlgos holds the HostKey algorithms that the SSH client will advertise to the server. If empty, Go's default is used instead.

View Source
var KexAlgos []string

KexAlgos hosts the key exchange algorithms to be used for SSH connections. If empty, Go's default is used instead.

Functions

func ExtractNamedPointerFromRevision added in v0.9.0

func ExtractNamedPointerFromRevision(rev string) string

ExtractNamedPointerFromRevision extracts the named pointer from a revision string. It accepts the following formats:

  • main@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • main/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch/5394cb7f48332b2de7c17dd8b8384bbc84b7e738

If the revision string does not contain a named pointer, the returned string is empty.

func IsAnnotatedTag added in v0.13.0

func IsAnnotatedTag(t Tag) bool

IsAnnotatedTag returns true if the provided tag is annotated.

func IsConcreteCommit added in v0.5.0

func IsConcreteCommit(c Commit) bool

IsConcreteCommit returns if a given commit is a concrete commit. Concrete commits have most of the commit metadata and content. In contrast, a partial commit may only have some metadata and no commit content.

func IsSignedTag added in v0.13.0

func IsSignedTag(t Tag) bool

IsSignedTag returns true if the provided tag has a signature.

func SecurePath added in v0.6.0

func SecurePath(path string) (string, error)

SecurePath accepts an absolute or relative path and returns a path that is safe for use. If the path is absolute, it's `filepath.Clean`ed and returned. If the path is relative, it's securely joined against the working directory to ensure that the resultant path is a child of the working directory.

func TransformRevision added in v0.9.0

func TransformRevision(rev string) string

TransformRevision transforms a "legacy" revision string into a "new" revision string. It accepts the following formats:

  • main/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • HEAD/5394cb7f48332b2de7c17dd8b8384bbc84b7e738

Which are transformed into the following formats respectively:

- main@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738 - feature/branch@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738 - sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738

NOTE: This function is only intended to be used for backwards compatibility with the old revision format. It may be removed in a future release.

Types

type AuthOptions added in v0.5.0

type AuthOptions struct {
	Transport   TransportType
	Host        string
	Username    string
	Password    string
	BearerToken string
	Identity    []byte
	KnownHosts  []byte
	CAFile      []byte
}

AuthOptions are the authentication options for the Transport of communication with a remote origin.

func NewAuthOptions added in v0.5.0

func NewAuthOptions(u url.URL, data map[string][]byte) (*AuthOptions, error)

NewAuthOptions constructs an AuthOptions object from the given map and URL. If the map is empty, it returns a minimal AuthOptions object after validating the result.

func (AuthOptions) Validate added in v0.5.0

func (o AuthOptions) Validate() error

Validate the AuthOptions against the defined Transport.

type Commit added in v0.5.0

type Commit struct {
	// Hash is the hash of the commit.
	Hash Hash
	// Reference is the original reference of the commit, for example:
	// 'refs/tags/foo'.
	Reference string
	// Author is the original author of the commit.
	Author Signature
	// Committer is the one performing the commit, might be different from
	// Author.
	Committer Signature
	// Signature is the PGP signature of the commit.
	Signature string
	// Encoded is the encoded commit, without any signature.
	Encoded []byte
	// Message is the commit message, containing arbitrary text.
	Message string
	// ReferencingTag is the tag that points to this commit.
	ReferencingTag *Tag
}

Commit contains all possible information about a Git commit.

func (*Commit) AbsoluteReference added in v0.11.0

func (c *Commit) AbsoluteReference() string

AbsoluteReference returns a string representation of the Commit, composed out of the Reference element (if not empty) and Hash. For example: 'refs/tags/tag-1@sha1:a0c14dc8580a23f79bc654faa79c4f62b46c2c22' for a "refs/tags/tag-1" Reference.

func (*Commit) ShortMessage added in v0.5.0

func (c *Commit) ShortMessage() string

ShortMessage returns the first 50 characters of a commit subject.

func (*Commit) String added in v0.5.0

func (c *Commit) String() string

String returns a string representation of the Commit, composed out of the last part of the Reference element (if not empty) and Hash. For example: 'tag-1@sha1:a0c14dc8580a23f79bc654faa79c4f62b46c2c22', for a "refs/tags/tag-1" Reference.

func (*Commit) Verify added in v0.5.0

func (c *Commit) Verify(keyRings ...string) (string, error)

Verify the Signature of the commit with the given key rings. It returns the fingerprint of the key the signature was verified with, or an error. It does not verify the signature of the referencing tag (if present). Users are expected to explicitly verify the referencing tag's signature using `c.ReferencingTag.Verify()`

type ErrRepositoryNotFound added in v0.5.0

type ErrRepositoryNotFound struct {
	Message string
	URL     string
}

ErrRepositoryNotFound indicates that the repository (or the ref in question) does not exist at the given URL.

func (ErrRepositoryNotFound) Error added in v0.5.0

func (e ErrRepositoryNotFound) Error() string

type Hash added in v0.5.0

type Hash []byte

Hash is the (non-truncated) SHA-1 or SHA-256 hash of a Git commit.

func ExtractHashFromRevision added in v0.9.0

func ExtractHashFromRevision(rev string) Hash

ExtractHashFromRevision extracts the hash from a revision string. It accepts the following formats:

  • main@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • main/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • HEAD/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • 5394cb7f48332b2de7c17dd8b8384bbc84b7e738

func SplitRevision added in v0.9.0

func SplitRevision(rev string) (string, Hash)

SplitRevision splits a revision string into it's named pointer and hash components. It accepts the following formats:

  • main@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch@sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • sha1:5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • main/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • feature/branch/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • HEAD/5394cb7f48332b2de7c17dd8b8384bbc84b7e738
  • 5394cb7f48332b2de7c17dd8b8384bbc84b7e738

If the revision string does not contain a named pointer, the returned string will be empty.

func (Hash) Algorithm added in v0.9.0

func (h Hash) Algorithm() string

Algorithm returns the algorithm of the hash based on its length. This is heuristic, and may not be accurate for truncated user constructed hashes. The library itself does not produce truncated hashes.

func (Hash) Digest added in v0.9.0

func (h Hash) Digest() string

Digest returns a digest of the commit, in the format of "<algorithm>:<hash>".

func (Hash) String added in v0.5.0

func (h Hash) String() string

String returns the Hash as a string.

type Signature added in v0.5.0

type Signature struct {
	Name  string
	Email string
	When  time.Time
}

Signature represents an entity which associates a person and a time with a commit.

type Tag added in v0.13.0

type Tag struct {
	// Hash is the hash of the tag.
	Hash Hash
	// Name is the name of the tag.
	Name string
	// Author is the original author of the tag.
	Author Signature
	// Signature is the PGP signature of the tag.
	Signature string
	// Encoded is the encoded tag, without any signature.
	Encoded []byte
	// Message is the tag message, containing arbitrary text.
	Message string
}

Tag represents a Git tag.

func (*Tag) String added in v0.13.0

func (t *Tag) String() string

String returns a short string representation of the tag in the format of <name@hash>, for eg: "1.0.0@a0c14dc8580a23f79bc654faa79c4f62b46c2c22" If the tag is lightweight, it won't have a hash, so it'll simply return the tag name, i.e. "1.0.0".

func (*Tag) Verify added in v0.13.0

func (t *Tag) Verify(keyRings ...string) (string, error)

Verify the Signature of the tag with the given key rings. It returns the fingerprint of the key the signature was verified with, or an error.

type TransportType added in v0.5.0

type TransportType string
const (
	SSH   TransportType = "ssh"
	HTTPS TransportType = "https"
	HTTP  TransportType = "http"
)

Directories

Path Synopsis
gogit module
internal
e2e Module
libgit2 module

Jump to

Keyboard shortcuts

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