gitaly

package
v17.0.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultBranch = "HEAD"
)

Variables

View Source
var File_internal_gitaly_gitaly_proto protoreflect.FileDescriptor

Functions

func NewFileTooBigError

func NewFileTooBigError(err error, rpcName, path string) error

func NewInvalidArgument

func NewInvalidArgument(err error, rpcName, path string) error

func NewNotFoundError

func NewNotFoundError(rpcName, path string) error

func NewProtocolError

func NewProtocolError(err error, message, rpcName, path string) error

func NewRPCError

func NewRPCError(err error, rpcName, path string) error

func NewUnexpectedTreeEntryTypeError

func NewUnexpectedTreeEntryTypeError(rpcName, path string) error

Types

type AccumulatingFileVisitor

type AccumulatingFileVisitor struct {
	Data []byte
}

func (*AccumulatingFileVisitor) Chunk

func (a *AccumulatingFileVisitor) Chunk(data []byte) (bool, error)

type ChunkingFetchVisitor

type ChunkingFetchVisitor struct {
	FetchVisitor
	// contains filtered or unexported fields
}

func NewChunkingFetchVisitor

func NewChunkingFetchVisitor(delegate FetchVisitor, maxChunkSize int) *ChunkingFetchVisitor

func (ChunkingFetchVisitor) StreamChunk

func (v ChunkingFetchVisitor) StreamChunk(path []byte, data []byte) (bool, error)

type ClientPool

type ClientPool interface {
	Dial(ctx context.Context, address, token string) (*grpc.ClientConn, error)
}

ClientPool abstracts gitlab.com/gitlab-org/gitaly/client.Pool.

type DupBehavior

type DupBehavior byte
const (
	// DupError means "return error on duplicate file".
	DupError DupBehavior = 1
	// DupSkip means "skip duplicate files".
	DupSkip DupBehavior = 2
)

type DuplicatePathDetectingVisitor

type DuplicatePathDetectingVisitor struct {
	FetchVisitor

	DupBehavior DupBehavior
	// contains filtered or unexported fields
}

func NewDuplicateFileDetectingVisitor

func NewDuplicateFileDetectingVisitor(delegate FetchVisitor, dupBehavior DupBehavior) DuplicatePathDetectingVisitor

func (DuplicatePathDetectingVisitor) Entry

type DuplicatePathFoundError

type DuplicatePathFoundError struct {
	Path string
}

func (*DuplicatePathFoundError) Error

func (e *DuplicatePathFoundError) Error() string

type EntryCountLimitingFetchVisitor

type EntryCountLimitingFetchVisitor struct {
	FetchVisitor

	FilesVisited uint32
	FilesSent    uint32
	// contains filtered or unexported fields
}

func NewEntryCountLimitingFetchVisitor

func NewEntryCountLimitingFetchVisitor(delegate FetchVisitor, maxNumberOfFiles uint32) *EntryCountLimitingFetchVisitor

func (*EntryCountLimitingFetchVisitor) Entry

func (*EntryCountLimitingFetchVisitor) EntryDone

func (v *EntryCountLimitingFetchVisitor) EntryDone(entry *gitalypb.TreeEntry, err error)

type Error

type Error struct {
	Code    ErrorCode
	Cause   error
	Message string
	// RPCName is the name of gRPC method that failed.
	RPCName string
	// Path contains name of the file or directory the operation was being carried on.
	Path string
}

func (*Error) Error

func (e *Error) Error() string

func (*Error) Unwrap

func (e *Error) Unwrap() error

type ErrorCode

type ErrorCode int
const (
	// UnknownError - what happened is unknown
	UnknownError ErrorCode = iota
	// NotFound - file/directory/ref was not found
	NotFound
	// FileTooBig - file is too big
	FileTooBig
	// RPCError - gRPC returned an error
	RPCError
	// ProtocolError - protocol violation, an unexpected situation occurred.
	ProtocolError
	// UnexpectedTreeEntryType - returned when TreeEntryResponse has an unexpected type.
	UnexpectedTreeEntryType
	// InvalidArgument - returned when Gitaly responds with InvalidArgument status code.
	InvalidArgument
)

func ErrorCodeFromError

func ErrorCodeFromError(err error) ErrorCode

func (ErrorCode) String

func (e ErrorCode) String() string

type FetchVisitor

type FetchVisitor interface {
	Entry(*gitalypb.TreeEntry) (bool, int64, error)
	StreamChunk(path []byte, data []byte) (bool, error)
	// EntryDone is called after the entry has been fully streamed.
	// It's not called for entries that are not streamed i.e. skipped.
	EntryDone(*gitalypb.TreeEntry, error)
}

FetchVisitor is the visitor callback, invoked for each chunk of each path entry.

type FileVisitor

type FileVisitor interface {
	Chunk(data []byte) (bool, error)
}

FileVisitor is the visitor callback, invoked for each chunk of a file.

type FindCommitResponseForPolling

type FindCommitResponseForPolling struct {
	Commit *GitCommitForPolling `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"`
	// contains filtered or unexported fields
}

func (*FindCommitResponseForPolling) Descriptor deprecated

func (*FindCommitResponseForPolling) Descriptor() ([]byte, []int)

Deprecated: Use FindCommitResponseForPolling.ProtoReflect.Descriptor instead.

func (*FindCommitResponseForPolling) GetCommit

func (*FindCommitResponseForPolling) ProtoMessage

func (*FindCommitResponseForPolling) ProtoMessage()

func (*FindCommitResponseForPolling) ProtoReflect

func (*FindCommitResponseForPolling) Reset

func (x *FindCommitResponseForPolling) Reset()

func (*FindCommitResponseForPolling) String

type GitCommitForPolling

type GitCommitForPolling struct {
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// contains filtered or unexported fields
}

func (*GitCommitForPolling) Descriptor deprecated

func (*GitCommitForPolling) Descriptor() ([]byte, []int)

Deprecated: Use GitCommitForPolling.ProtoReflect.Descriptor instead.

func (*GitCommitForPolling) GetId

func (x *GitCommitForPolling) GetId() string

func (*GitCommitForPolling) ProtoMessage

func (*GitCommitForPolling) ProtoMessage()

func (*GitCommitForPolling) ProtoReflect

func (x *GitCommitForPolling) ProtoReflect() protoreflect.Message

func (*GitCommitForPolling) Reset

func (x *GitCommitForPolling) Reset()

func (*GitCommitForPolling) String

func (x *GitCommitForPolling) String() string

type GlobFilteringFetchVisitor

type GlobFilteringFetchVisitor struct {
	FetchVisitor
	Glob string
}

func NewGlobFilteringFetchVisitor

func NewGlobFilteringFetchVisitor(delegate FetchVisitor, glob string) *GlobFilteringFetchVisitor

func (GlobFilteringFetchVisitor) Entry

type GlobMatchFailedError

type GlobMatchFailedError struct {
	Cause error
	Glob  string
}

func (*GlobMatchFailedError) Error

func (e *GlobMatchFailedError) Error() string

func (*GlobMatchFailedError) Unwrap

func (e *GlobMatchFailedError) Unwrap() error

type HiddenDirFilteringFetchVisitor

type HiddenDirFilteringFetchVisitor struct {
	FetchVisitor
}

func NewHiddenDirFilteringFetchVisitor

func NewHiddenDirFilteringFetchVisitor(delegate FetchVisitor) *HiddenDirFilteringFetchVisitor

func (HiddenDirFilteringFetchVisitor) Entry

type MaxNumberOfFilesError

type MaxNumberOfFilesError struct {
	MaxNumberOfFiles uint32
}

func (*MaxNumberOfFilesError) Error

func (e *MaxNumberOfFilesError) Error() string

type PathEntryVisitor

type PathEntryVisitor interface {
	Entry(*gitalypb.TreeEntry) (bool, error)
}

type PathFetcher

type PathFetcher struct {
	Client   gitalypb.CommitServiceClient
	Features map[string]string
}

func (*PathFetcher) FetchFile

func (f *PathFetcher) FetchFile(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, sizeLimit int64) ([]byte, error)

func (*PathFetcher) StreamFile

func (f *PathFetcher) StreamFile(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, sizeLimit int64, v FileVisitor) error

func (*PathFetcher) Visit

func (f *PathFetcher) Visit(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, recursive bool, visitor FetchVisitor) error

func (*PathFetcher) VisitSingleFile

func (f *PathFetcher) VisitSingleFile(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, visitor FetchVisitor) error

type PathFetcherInterface

type PathFetcherInterface interface {
	// Visit returns a wrapped context.Canceled, context.DeadlineExceeded or gRPC error if ctx signals done and interrupts a running gRPC call.
	// Visit returns *Error when an error occurs.
	Visit(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, recursive bool, visitor FetchVisitor) error
	// VisitSingleFile returns a wrapped context.Canceled, context.DeadlineExceeded or gRPC error if ctx signals done and interrupts a running gRPC call.
	// VisitSingleFile returns *Error when an error occurs.
	VisitSingleFile(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, visitor FetchVisitor) error
	// StreamFile streams the specified revision of the file.
	// The passed visitor is never called if file was not found.
	// StreamFile returns a wrapped context.Canceled, context.DeadlineExceeded or gRPC error if ctx signals done and interrupts a running gRPC call.
	// StreamFile returns *Error when an error occurs.
	StreamFile(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, sizeLimit int64, v FileVisitor) error
	// FetchFile fetches the specified revision of a file.
	// FetchFile returns a wrapped context.Canceled, context.DeadlineExceeded or gRPC error if ctx signals done and interrupts a running gRPC call.
	// FetchFile returns *Error when an error occurs.
	FetchFile(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, sizeLimit int64) ([]byte, error)
}

type PathVisitor

type PathVisitor struct {
	Client   gitalypb.CommitServiceClient
	Features map[string]string
}

func (*PathVisitor) Visit

func (v *PathVisitor) Visit(ctx context.Context, repo *gitalypb.Repository, revision, repoPath []byte, recursive bool, visitor PathEntryVisitor) error

type PollInfo

type PollInfo struct {
	CommitID        string
	UpdateAvailable bool
	// RefNotFound is true when no commits were found for the provided ref.
	RefNotFound bool
}

type Poller

type Poller struct {
	Client   gitalypb.CommitServiceClient
	Features map[string]string
}

func (*Poller) Poll

func (p *Poller) Poll(ctx context.Context, repo *gitalypb.Repository, lastProcessedCommitID, fullRefName string) (*PollInfo, error)

Poll searched the given repository for the given fullRefName and returns a PollInfo containing a resolved Commit Object ID. Valid fullRefNames are: * `refs/heads/*` => for branches * `refs/tags/*` => for tags * `HEAD` => for the repository's default branch

type PollerInterface

type PollerInterface interface {
	// Poll performs a poll on the repository.
	// revision can be a branch name or a tag.
	// Poll returns a wrapped context.Canceled, context.DeadlineExceeded or gRPC error if ctx signals done and interrupts a running gRPC call.
	// Poll returns *Error when an error occurs.
	Poll(ctx context.Context, repo *gitalypb.Repository, lastProcessedCommitID, refName string) (*PollInfo, error)
}

PollerInterface does the following: - polls ref advertisement for updates to the repository - detects which is the main branch, if branch or tag name is not specified - compares the commit id the branch or tag is referring to with the last processed one - returns the information about the change

type Pool

type Pool struct {
	ClientPool ClientPool
}

func (*Pool) PathFetcher

func (p *Pool) PathFetcher(ctx context.Context, info *entity.GitalyInfo) (PathFetcherInterface, error)

func (*Pool) Poller

func (p *Pool) Poller(ctx context.Context, info *entity.GitalyInfo) (PollerInterface, error)

type PoolInterface

type PoolInterface interface {
	Poller(context.Context, *entity.GitalyInfo) (PollerInterface, error)
	PathFetcher(context.Context, *entity.GitalyInfo) (PathFetcherInterface, error)
}

type TotalSizeLimitingFetchVisitor

type TotalSizeLimitingFetchVisitor struct {
	FetchVisitor
	RemainingTotalFileSize int64
}

func NewTotalSizeLimitingFetchVisitor

func NewTotalSizeLimitingFetchVisitor(delegate FetchVisitor, maxTotalFileSize int64) *TotalSizeLimitingFetchVisitor

func (*TotalSizeLimitingFetchVisitor) Entry

func (*TotalSizeLimitingFetchVisitor) StreamChunk

func (v *TotalSizeLimitingFetchVisitor) StreamChunk(path []byte, data []byte) (bool, error)

Directories

Path Synopsis
vendored
backoff
Package backoff implements exponential backoff mechanism based on gRPC's backoff algorithm https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md
Package backoff implements exponential backoff mechanism based on gRPC's backoff algorithm https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md

Jump to

Keyboard shortcuts

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