git_repo

package
v1.2.7 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2021 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	GitArchivesCacheVersion = "2"
	GitPatchesCacheVersion  = "2"
)
View Source
const GitRepoCacheVersion = "4"
View Source
const GitWorkTreeCacheVersion = "8"

Variables

View Source
var ErrLocalRepositoryNotExists = git.ErrRepositoryNotExists

Functions

func GetGitRepoCacheDir

func GetGitRepoCacheDir() string

func GetWorkTreeCacheDir

func GetWorkTreeCacheDir() string

func HasSubmodulesInCommit

func HasSubmodulesInCommit(commit *object.Commit) (bool, error)

func Init added in v1.2.2

func Init() error

func IsTreeEntryNotFoundInRepoErr added in v1.2.5

func IsTreeEntryNotFoundInRepoErr(err error) bool

Types

type Archive

type Archive interface {
	GetFilePath() string
	GetType() ArchiveType
	IsEmpty() bool
}

type ArchiveFile

type ArchiveFile struct {
	FilePath   string
	Descriptor *true_git.ArchiveDescriptor
}

func (*ArchiveFile) GetFilePath

func (a *ArchiveFile) GetFilePath() string

func (*ArchiveFile) GetType

func (a *ArchiveFile) GetType() ArchiveType

func (*ArchiveFile) IsEmpty

func (a *ArchiveFile) IsEmpty() bool

type ArchiveOptions

type ArchiveOptions struct {
	FilterOptions
	Commit string
}

type ArchiveType

type ArchiveType string
const (
	FileArchive      ArchiveType = "file"
	DirectoryArchive ArchiveType = "directory"
)

type Base

type Base struct {
	Name string

	Cache Cache
}

func NewBase added in v1.2.6

func NewBase(name string) Base

func (*Base) CreateArchive added in v1.2.6

func (repo *Base) CreateArchive(ctx context.Context, repoPath, gitDir, repoID, workTreeCacheDir string, opts ArchiveOptions) (archive Archive, err error)

func (*Base) CreateChecksum added in v1.2.6

func (repo *Base) CreateChecksum(ctx context.Context, yieldRepositoryFunc func(ctx context.Context, commit string, doFunc func(*git.Repository) error) error, opts ChecksumOptions) (checksum Checksum, err error)

func (*Base) CreatePatch added in v1.2.6

func (repo *Base) CreatePatch(ctx context.Context, repoPath, gitDir, repoID, workTreeCacheDir string, opts PatchOptions) (patch Patch, err error)

func (*Base) GetName

func (repo *Base) GetName() string

func (*Base) HeadCommit

func (repo *Base) HeadCommit(ctx context.Context) (string, error)

func (*Base) LatestBranchCommit

func (repo *Base) LatestBranchCommit(ctx context.Context, branch string) (string, error)

func (*Base) String

func (repo *Base) String() string

func (*Base) TagCommit

func (repo *Base) TagCommit(ctx context.Context, branch string) (string, error)

type Cache added in v1.2.6

type Cache struct {
	Patches   map[string]Patch
	Checksums map[string]Checksum
	Archives  map[string]Archive
	// contains filtered or unexported fields
}

type Checksum

type Checksum interface {
	String() string
	GetNoMatchPaths() []string
}

type ChecksumDescriptor

type ChecksumDescriptor struct {
	NoMatchPaths []string
	Hash         hash.Hash
}

func (*ChecksumDescriptor) GetNoMatchPaths

func (c *ChecksumDescriptor) GetNoMatchPaths() []string

func (*ChecksumDescriptor) String

func (c *ChecksumDescriptor) String() string

type ChecksumOptions

type ChecksumOptions struct {
	FilterOptions
	Paths  []string
	Commit string
}

type FilterOptions

type FilterOptions struct {
	BasePath                   string
	IncludePaths, ExcludePaths []string
}

type GitDataManager added in v1.2.2

type GitDataManager struct {
	ArchivesCacheDir string
	PatchesCacheDir  string
	TmpDir           string
}
var (
	CommonGitDataManager *GitDataManager
)

func NewGitDataManager added in v1.2.2

func NewGitDataManager(archivesCacheDir, patchesCacheDir, tmpDir string) *GitDataManager

func (*GitDataManager) CreateArchiveFile added in v1.2.2

func (manager *GitDataManager) CreateArchiveFile(ctx context.Context, repoID string, opts ArchiveOptions, tmpPath string, desc *true_git.ArchiveDescriptor) (*ArchiveFile, error)

func (*GitDataManager) CreatePatchFile added in v1.2.2

func (manager *GitDataManager) CreatePatchFile(ctx context.Context, repoID string, opts PatchOptions, tmpPath string, desc *true_git.PatchDescriptor) (*PatchFile, error)

func (*GitDataManager) GC added in v1.2.2

func (manager *GitDataManager) GC() error

func (*GitDataManager) GetArchiveFile added in v1.2.2

func (manager *GitDataManager) GetArchiveFile(ctx context.Context, repoID string, opts ArchiveOptions) (*ArchiveFile, error)

func (*GitDataManager) GetPatchFile added in v1.2.2

func (manager *GitDataManager) GetPatchFile(ctx context.Context, repoID string, opts PatchOptions) (*PatchFile, error)

func (*GitDataManager) NewTmpFile added in v1.2.2

func (manager *GitDataManager) NewTmpFile() (string, error)

type GitRepo

type GitRepo interface {
	String() string
	GetName() string

	IsEmpty(ctx context.Context) (bool, error)
	HeadCommit(ctx context.Context) (string, error)
	LatestBranchCommit(ctx context.Context, branch string) (string, error)
	TagCommit(ctx context.Context, tag string) (string, error)
	IsCommitExists(ctx context.Context, commit string) (bool, error)
	IsAncestor(ctx context.Context, ancestorCommit, descendantCommit string) (bool, error)

	GetMergeCommitParents(ctx context.Context, commit string) ([]string, error)

	CreateDetachedMergeCommit(ctx context.Context, fromCommit, toCommit string) (string, error)
	GetOrCreatePatch(context.Context, PatchOptions) (Patch, error)
	GetOrCreateArchive(context.Context, ArchiveOptions) (Archive, error)
	GetOrCreateChecksum(context.Context, ChecksumOptions) (Checksum, error)
}

type Local

type Local struct {
	Base

	WorkTreeDir string
	GitDir      string
	// contains filtered or unexported fields
}

func OpenLocalRepo

func OpenLocalRepo(name, workTreeDir string, opts OpenLocalRepoOptions) (l *Local, err error)

func (*Local) CreateDetachedMergeCommit

func (repo *Local) CreateDetachedMergeCommit(ctx context.Context, fromCommit, toCommit string) (string, error)

func (*Local) FetchOrigin added in v1.1.23

func (repo *Local) FetchOrigin(ctx context.Context) error

func (*Local) GetMergeCommitParents

func (repo *Local) GetMergeCommitParents(_ context.Context, commit string) ([]string, error)

func (*Local) GetModifiedLocallyFilePathList added in v1.2.6

func (repo *Local) GetModifiedLocallyFilePathList(ctx context.Context, matcher path_matcher.PathMatcher, options status.FilterOptions) ([]string, error)

func (*Local) GetOrCreateArchive added in v1.2.6

func (repo *Local) GetOrCreateArchive(ctx context.Context, opts ArchiveOptions) (Archive, error)

func (*Local) GetOrCreateChecksum added in v1.2.6

func (repo *Local) GetOrCreateChecksum(ctx context.Context, opts ChecksumOptions) (checksum Checksum, checksumErr error)

func (*Local) GetOrCreatePatch added in v1.2.6

func (repo *Local) GetOrCreatePatch(ctx context.Context, opts PatchOptions) (Patch, error)

func (*Local) HeadCommit

func (repo *Local) HeadCommit(_ context.Context) (string, error)

func (*Local) InitAndSetMainStatusResult added in v1.2.7

func (repo *Local) InitAndSetMainStatusResult(ctx context.Context) (err error)

func (*Local) IsAncestor

func (repo *Local) IsAncestor(_ context.Context, ancestorCommit, descendantCommit string) (bool, error)

func (*Local) IsCommitDirectoryExist added in v1.2.5

func (repo *Local) IsCommitDirectoryExist(ctx context.Context, commit, path string) (exist bool, err error)

IsCommitDirectoryExist resolves symlinks and returns true if the resolved commit tree entry is Dir or Submodule.

func (*Local) IsCommitExists

func (repo *Local) IsCommitExists(ctx context.Context, commit string) (bool, error)

func (*Local) IsCommitFileExist added in v1.2.5

func (repo *Local) IsCommitFileExist(ctx context.Context, commit, path string) (exist bool, err error)

IsCommitFileExist resolves symlinks and returns true if the resolved commit tree entry is Regular, Deprecated, or Executable.

func (*Local) IsCommitTreeEntryDirectory added in v1.2.7

func (repo *Local) IsCommitTreeEntryDirectory(ctx context.Context, commit, relPath string) (isDirectory bool, err error)

func (*Local) IsCommitTreeEntryExist added in v1.2.5

func (repo *Local) IsCommitTreeEntryExist(ctx context.Context, commit, relPath string) (exist bool, err error)

func (*Local) IsEmpty

func (repo *Local) IsEmpty(ctx context.Context) (bool, error)

func (*Local) IsFileModifiedLocally added in v1.2.5

func (repo *Local) IsFileModifiedLocally(ctx context.Context, path string, options status.FilterOptions) (bool, error)

IsFileModifiedLocally checks if the file has worktree or staged changes

func (*Local) IsShallowClone

func (repo *Local) IsShallowClone() (bool, error)

func (*Local) ListCommitFilesWithGlob added in v1.2.5

func (repo *Local) ListCommitFilesWithGlob(ctx context.Context, commit string, dir string, glob string) (files []string, err error)

ListCommitFilesWithGlob returns the list of files by the glob, follows symlinks. The result paths are relative to the passed directory, the method does reverse resolving for symlinks.

func (*Local) LsTree

func (repo *Local) LsTree(ctx context.Context, pathMatcher path_matcher.PathMatcher, opts LsTreeOptions) (*ls_tree.Result, error)

func (*Local) PlainOpen

func (repo *Local) PlainOpen() (*git.Repository, error)

func (*Local) ReadCommitFile added in v1.2.2

func (repo *Local) ReadCommitFile(ctx context.Context, commit, path string) (data []byte, err error)

ReadCommitFile resolves symlinks and returns commit tree entry content.

func (*Local) ReadCommitTreeEntryContent added in v1.2.5

func (repo *Local) ReadCommitTreeEntryContent(ctx context.Context, commit, relPath string) ([]byte, error)

func (*Local) RemoteBranchesList

func (repo *Local) RemoteBranchesList(ctx context.Context) ([]string, error)

func (*Local) RemoteOriginUrl

func (repo *Local) RemoteOriginUrl(ctx context.Context) (string, error)

func (*Local) ResolveAndCheckCommitFilePath added in v1.2.5

func (repo *Local) ResolveAndCheckCommitFilePath(ctx context.Context, commit, path string, checkSymlinkTargetFunc func(resolvedPath string) error) (resolvedPath string, err error)

ResolveAndCheckCommitFilePath does ResolveCommitFilePath with an additional check for each resolved link target.

func (*Local) ResolveCommitFilePath added in v1.2.5

func (repo *Local) ResolveCommitFilePath(ctx context.Context, commit, path string) (resolvedPath string, err error)

ResolveCommitFilePath follows symbolic links and returns the resolved path if there is a corresponding tree entry in the repo.

func (*Local) Status

func (repo *Local) Status(ctx context.Context, pathMatcher path_matcher.PathMatcher) (*status.Result, error)

func (*Local) SyncWithOrigin added in v1.1.23

func (repo *Local) SyncWithOrigin(ctx context.Context) error

func (*Local) TagsList

func (repo *Local) TagsList(ctx context.Context) ([]string, error)

func (*Local) ValidateSubmodules added in v1.2.6

func (repo *Local) ValidateSubmodules(ctx context.Context, matcher path_matcher.PathMatcher) error

func (*Local) WalkCommitFiles added in v1.2.5

func (repo *Local) WalkCommitFiles(ctx context.Context, commit string, dir string, pathMatcher path_matcher.PathMatcher, fileFunc func(notResolvedPath string) error) error

type LsTreeOptions

type LsTreeOptions struct {
	Commit        string
	UseHeadCommit bool
	Strict        bool
}

type OpenLocalRepoOptions added in v1.1.21

type OpenLocalRepoOptions struct {
	Dev bool
}

type Patch

type Patch interface {
	GetFilePath() string
	IsEmpty() bool
	HasBinary() bool
	GetPaths() []string
	GetBinaryPaths() []string
}

type PatchFile

type PatchFile struct {
	FilePath   string
	Descriptor *true_git.PatchDescriptor
}

func (*PatchFile) GetBinaryPaths

func (p *PatchFile) GetBinaryPaths() []string

func (*PatchFile) GetFilePath

func (p *PatchFile) GetFilePath() string

func (*PatchFile) GetPaths

func (p *PatchFile) GetPaths() []string

func (*PatchFile) HasBinary

func (p *PatchFile) HasBinary() bool

func (*PatchFile) IsEmpty

func (p *PatchFile) IsEmpty() bool

type PatchOptions

type PatchOptions struct {
	FilterOptions
	FromCommit, ToCommit string

	WithEntireFileContext bool
	WithBinary            bool
}

type Remote

type Remote struct {
	Base
	Url      string
	IsDryRun bool

	Endpoint *transport.Endpoint
}

func OpenRemoteRepo

func OpenRemoteRepo(name, url string) (*Remote, error)

func (*Remote) Clone

func (repo *Remote) Clone(ctx context.Context) (bool, error)

func (*Remote) CloneAndFetch

func (repo *Remote) CloneAndFetch(ctx context.Context) error

func (*Remote) CreateDetachedMergeCommit

func (repo *Remote) CreateDetachedMergeCommit(ctx context.Context, fromCommit, toCommit string) (string, error)

func (*Remote) Fetch

func (repo *Remote) Fetch(ctx context.Context) error

func (*Remote) GetClonePath

func (repo *Remote) GetClonePath() string

func (*Remote) GetMergeCommitParents

func (repo *Remote) GetMergeCommitParents(_ context.Context, commit string) ([]string, error)

func (*Remote) GetOrCreateArchive added in v1.2.6

func (repo *Remote) GetOrCreateArchive(ctx context.Context, opts ArchiveOptions) (Archive, error)

func (*Remote) GetOrCreateChecksum added in v1.2.6

func (repo *Remote) GetOrCreateChecksum(ctx context.Context, opts ChecksumOptions) (Checksum, error)

func (*Remote) GetOrCreatePatch added in v1.2.6

func (repo *Remote) GetOrCreatePatch(ctx context.Context, opts PatchOptions) (Patch, error)

func (*Remote) HeadCommit

func (repo *Remote) HeadCommit(_ context.Context) (string, error)

func (*Remote) IsAncestor

func (repo *Remote) IsAncestor(ctx context.Context, ancestorCommit, descendantCommit string) (bool, error)

func (*Remote) IsCommitExists

func (repo *Remote) IsCommitExists(ctx context.Context, commit string) (bool, error)

func (*Remote) IsEmpty

func (repo *Remote) IsEmpty(ctx context.Context) (bool, error)

func (*Remote) LatestBranchCommit

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

func (*Remote) RemoteBranchesList

func (repo *Remote) RemoteBranchesList(_ context.Context) ([]string, error)

func (*Remote) RemoteOriginUrl

func (repo *Remote) RemoteOriginUrl() (string, error)

func (*Remote) TagCommit

func (repo *Remote) TagCommit(ctx context.Context, tag string) (string, error)

func (*Remote) TagsList

func (repo *Remote) TagsList(_ context.Context) ([]string, error)

func (*Remote) ValidateEndpoint

func (repo *Remote) ValidateEndpoint() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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