git_repo

package
v1.2.10 Latest Latest
Warning

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

Go to latest
Published: Mar 15, 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 true_git.ArchiveOptions

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 {
	PathMatcher path_matcher.PathMatcher
	Paths       []string
	Commit      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) 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) 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) 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(_ context.Context) ([]string, error)

func (*Local) RemoteOriginUrl

func (repo *Local) RemoteOriginUrl(_ 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) StatusIndexChecksum added in v1.2.10

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

func (*Local) StatusPathList added in v1.2.8

func (repo *Local) StatusPathList(ctx context.Context, pathMatcher path_matcher.PathMatcher, opts StatusPathListOptions) (list []string, err error)

func (*Local) SyncWithOrigin added in v1.1.23

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

func (*Local) TagsList

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

func (*Local) ValidateStatusResult added in v1.2.10

func (repo *Local) ValidateStatusResult(ctx context.Context, pathMatcher path_matcher.PathMatcher, opts ValidateStatusResultOptions) 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
	AllFiles      bool
}

type OpenLocalRepoOptions added in v1.1.21

type OpenLocalRepoOptions struct {
	WithServiceHeadCommit    bool
	ServiceHeadCommitOptions ServiceHeadCommit
}

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 true_git.PatchOptions

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

type ServiceHeadCommit added in v1.2.9

type ServiceHeadCommit struct {
	WithStagedChangesOnly bool // all tracked files if false
}

type StatusFilesFoundError added in v1.2.10

type StatusFilesFoundError struct {
	PathList []string
	// contains filtered or unexported fields
}

type StatusPathListOptions added in v1.2.8

type StatusPathListOptions struct {
	OnlyWorktreeChanges  bool
	OnlyUntrackedChanges bool
}

type SubmoduleAddedAndNotCommittedError added in v1.2.8

type SubmoduleAddedAndNotCommittedError SubmoduleErrorBase

type SubmoduleCommitChangedError added in v1.2.8

type SubmoduleCommitChangedError SubmoduleErrorBase

type SubmoduleDeletedError added in v1.2.8

type SubmoduleDeletedError SubmoduleErrorBase

type SubmoduleErrorBase added in v1.2.8

type SubmoduleErrorBase struct {
	SubmodulePath string
	// contains filtered or unexported fields
}

type SubmoduleHasUncommittedChangesError added in v1.2.8

type SubmoduleHasUncommittedChangesError SubmoduleErrorBase

type SubmoduleHasUntrackedChangesError added in v1.2.8

type SubmoduleHasUntrackedChangesError SubmoduleErrorBase

type UncommittedFilesFoundError added in v1.2.10

type UncommittedFilesFoundError StatusFilesFoundError

type UntrackedFilesFoundError added in v1.2.10

type UntrackedFilesFoundError StatusFilesFoundError

type ValidateStatusResultOptions added in v1.2.10

type ValidateStatusResultOptions StatusPathListOptions

Jump to

Keyboard shortcuts

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