git

package
v3.0.0-...-838862a Latest Latest
Warning

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

Go to latest
Published: Oct 2, 2023 License: AGPL-3.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UnitRepo string = "repo"
	UnitDir  string = "dir"
)

Variables

This section is empty.

Functions

func CleanOnError

func CleanOnError(err *error, path string)

func CloneRepo

func CloneRepo(ctx context.Context, userInfo *url.Userinfo, gitURL string, args ...string) (string, *git.Repository, error)

CloneRepo orchestrates the cloning of a given Git repository, returning its local path and a git.Repository object for further operations. The function sets up error handling infrastructure, ensuring that any encountered errors trigger a cleanup of resources. The core cloning logic is delegated to a nested function, which returns errors to the outer function for centralized error handling and cleanup.

func CloneRepoUsingSSH

func CloneRepoUsingSSH(ctx context.Context, gitUrl string, args ...string) (string, *git.Repository, error)

CloneRepoUsingSSH clones a repo using SSH.

func CloneRepoUsingToken

func CloneRepoUsingToken(ctx context.Context, token, gitUrl, user string, args ...string) (string, *git.Repository, error)

CloneRepoUsingToken clones a repo using a provided token.

func CloneRepoUsingUnauthenticated

func CloneRepoUsingUnauthenticated(ctx context.Context, url string, args ...string) (string, *git.Repository, error)

CloneRepoUsingUnauthenticated clones a repo with no authentication required.

func GitCmdCheck

func GitCmdCheck() error

GitCmdCheck checks if git is installed and meets 2.20.0<=x<3.0.0 version requirements.

func GitURLParse

func GitURLParse(gitURL string) (*url.URL, error)

func PingRepoUsingToken

func PingRepoUsingToken(ctx context.Context, token, gitUrl, user string) error

PingRepoUsingToken executes git ls-remote on a repo and returns any error that occurs. It can be used to validate that a repo actually exists and is reachable.

Pinging using other authentication methods is only unimplemented because there's been no pressing need for it yet.

func PrepareRepo

func PrepareRepo(ctx context.Context, uriString string) (string, bool, error)

PrepareRepo clones a repo if possible and returns the cloned repo path.

func PrepareRepoSinceCommit

func PrepareRepoSinceCommit(ctx context.Context, uriString, commitHash string) (string, bool, error)

PrepareRepoSinceCommit clones a repo starting at the given commitHash and returns the cloned repo path.

func RepoFromPath

func RepoFromPath(path string, isBare bool) (*git.Repository, error)

func TryAdditionalBaseRefs

func TryAdditionalBaseRefs(repo *git.Repository, base string) (*plumbing.Hash, error)

TryAdditionalBaseRefs looks for additional possible base refs for a repo and returns a hash if found.

func UnmarshalUnit

func UnmarshalUnit(data []byte) (sources.SourceUnit, error)

Helper function to unmarshal raw bytes into our SourceUnit struct.

Types

type Git

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

func NewGit

func NewGit(sourceType sourcespb.SourceType, jobID sources.JobID, sourceID sources.SourceID, sourceName string, verify bool, concurrency int,
	sourceMetadataFunc func(file, email, commit, timestamp, repository string, line int64) *source_metadatapb.MetaData,
) *Git

func (*Git) CommitsScanned

func (s *Git) CommitsScanned() uint64

func (*Git) ScanCommits

func (s *Git) ScanCommits(ctx context.Context, repo *git.Repository, path string, scanOptions *ScanOptions, chunksChan chan *sources.Chunk) error

func (*Git) ScanRepo

func (s *Git) ScanRepo(ctx context.Context, repo *git.Repository, repoPath string, scanOptions *ScanOptions, chunksChan chan *sources.Chunk) error

func (*Git) ScanStaged

func (s *Git) ScanStaged(ctx context.Context, repo *git.Repository, path string, scanOptions *ScanOptions, chunksChan chan *sources.Chunk) error

ScanStaged chunks staged changes.

type ScanOption

type ScanOption func(*ScanOptions)

func ScanOptionBare

func ScanOptionBare(bare bool) ScanOption

func ScanOptionBaseHash

func ScanOptionBaseHash(hash string) ScanOption

func ScanOptionExcludeGlobs

func ScanOptionExcludeGlobs(globs []string) ScanOption

func ScanOptionFilter

func ScanOptionFilter(filter *common.Filter) ScanOption

func ScanOptionHeadCommit

func ScanOptionHeadCommit(hash string) ScanOption

func ScanOptionLogOptions

func ScanOptionLogOptions(logOptions *git.LogOptions) ScanOption

func ScanOptionMaxDepth

func ScanOptionMaxDepth(maxDepth int64) ScanOption

type ScanOptions

type ScanOptions struct {
	Filter       *common.Filter
	BaseHash     string // When scanning a git.Log, this is the oldest/first commit.
	HeadHash     string
	MaxDepth     int64
	Bare         bool
	ExcludeGlobs []string
	LogOptions   *git.LogOptions
}

func NewScanOptions

func NewScanOptions(options ...ScanOption) *ScanOptions

type Source

type Source struct {
	sources.Progress
	// contains filtered or unexported fields
}

func (*Source) Chunks

func (s *Source) Chunks(ctx context.Context, chunksChan chan *sources.Chunk, _ ...sources.ChunkingTarget) error

Chunks emits chunks of bytes over a channel.

func (*Source) Init

func (s *Source) Init(aCtx context.Context, name string, jobId sources.JobID, sourceId sources.SourceID, verify bool, connection *anypb.Any, concurrency int) error

Init returns an initialized GitHub source.

func (*Source) JobID

func (s *Source) JobID() sources.JobID

func (*Source) SourceID

func (s *Source) SourceID() sources.SourceID

func (*Source) Type

func (s *Source) Type() sourcespb.SourceType

Type returns the type of source. It is used for matching source types in configuration and job input.

func (*Source) UnmarshalSourceUnit

func (s *Source) UnmarshalSourceUnit(data []byte) (sources.SourceUnit, error)

func (*Source) WithPreserveTempDirs

func (s *Source) WithPreserveTempDirs(preserve bool)

WithPreserveTempDirs sets whether to preserve temp directories when scanning the provided list of s.conn.Directories. NOTE: This is *only* for s.conn.Directories, not all temp directories created. This is also a kludge and should be refactored away.

func (*Source) WithScanOptions

func (s *Source) WithScanOptions(scanOptions *ScanOptions)

WithScanOptions sets the scan options.

type SourceUnit

type SourceUnit struct {
	Kind string `json:"kind"`
	ID   string `json:"id"`
}

A git source unit can be two kinds of units: either a local directory path or a remote repository.

func (SourceUnit) SourceUnitID

func (u SourceUnit) SourceUnitID() string

Implement sources.SourceUnit interface.

Jump to

Keyboard shortcuts

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