Documentation ¶
Index ¶
- Constants
- Variables
- type ObjectPool
- func FromProto(locator storage.Locator, gitCmdFactory git.CommandFactory, ...) (*ObjectPool, error)
- func FromRepo(locator storage.Locator, gitCmdFactory git.CommandFactory, ...) (*ObjectPool, error)
- func NewObjectPool(locator storage.Locator, gitCmdFactory git.CommandFactory, ...) (*ObjectPool, error)
- func (o *ObjectPool) Create(ctx context.Context, repo *localrepo.Repo) (err error)
- func (o *ObjectPool) Exists() bool
- func (o *ObjectPool) FetchFromOrigin(ctx context.Context, origin *localrepo.Repo) error
- func (o *ObjectPool) FullPath() string
- func (o *ObjectPool) GetGitAlternateObjectDirectories() []string
- func (o *ObjectPool) GetGitObjectDirectory() string
- func (o *ObjectPool) GetRelativePath() string
- func (o *ObjectPool) GetStorageName() string
- func (o *ObjectPool) Init(ctx context.Context) (err error)
- func (o *ObjectPool) IsValid() bool
- func (o *ObjectPool) Link(ctx context.Context, repo *localrepo.Repo) (returnedErr error)
- func (o *ObjectPool) LinkedToRepository(repo *localrepo.Repo) (bool, error)
- func (o *ObjectPool) Remove(ctx context.Context) (err error)
- func (o *ObjectPool) ToProto() *gitalypb.ObjectPool
Constants ¶
const ErrInvalidPoolDir errString = "invalid object pool directory"
ErrInvalidPoolDir is returned when the object pool relative path is malformed.
Variables ¶
var ( // ErrInvalidPoolRepository indicates the directory the alternates file points to is not a valid git repository ErrInvalidPoolRepository = errors.New("object pool is not a valid git repository") // ErrAlternateObjectDirNotExist indicates a repository does not have an alternates file ErrAlternateObjectDirNotExist = errors.New("no alternates directory exists") )
Functions ¶
This section is empty.
Types ¶
type ObjectPool ¶
ObjectPool are a way to de-dupe objects between repositories, where the objects live in a pool in a distinct repository which is used as an alternate object store for other repositories.
func FromProto ¶
func FromProto( locator storage.Locator, gitCmdFactory git.CommandFactory, catfileCache catfile.Cache, txManager transaction.Manager, housekeepingManager housekeeping.Manager, o *gitalypb.ObjectPool, ) (*ObjectPool, error)
FromProto returns an object pool object from a git repository object
func FromRepo ¶
func FromRepo( locator storage.Locator, gitCmdFactory git.CommandFactory, catfileCache catfile.Cache, txManager transaction.Manager, housekeepingManager housekeeping.Manager, repo *localrepo.Repo, ) (*ObjectPool, error)
FromRepo returns an instance of ObjectPool that the repository points to
func NewObjectPool ¶
func NewObjectPool( locator storage.Locator, gitCmdFactory git.CommandFactory, catfileCache catfile.Cache, txManager transaction.Manager, housekeepingManager housekeeping.Manager, storageName, relativePath string, ) (*ObjectPool, error)
NewObjectPool will initialize the object with the required data on the storage shard. Relative path is validated to match the expected naming and directory structure. If the shard cannot be found, this function returns an error.
func (*ObjectPool) Create ¶
Create will create a pool for a repository and pull the required data to this pool. `repo` that is passed also joins the repository.
func (*ObjectPool) Exists ¶
func (o *ObjectPool) Exists() bool
Exists will return true if the pool path exists and is a directory
func (*ObjectPool) FetchFromOrigin ¶
FetchFromOrigin initializes the pool and fetches the objects from its origin repository
func (*ObjectPool) FullPath ¶
func (o *ObjectPool) FullPath() string
FullPath on disk, depending on the storage path, and the pools relative path
func (*ObjectPool) GetGitAlternateObjectDirectories ¶
func (o *ObjectPool) GetGitAlternateObjectDirectories() []string
GetGitAlternateObjectDirectories for object pools are empty, given pools are never a member of another pool, nor do they share Alternate objects with other repositories which the pool doesn't contain itself
func (*ObjectPool) GetGitObjectDirectory ¶
func (o *ObjectPool) GetGitObjectDirectory() string
GetGitObjectDirectory satisfies the repository.GitRepo interface, but is not used for ObjectPools
func (*ObjectPool) GetRelativePath ¶
func (o *ObjectPool) GetRelativePath() string
GetRelativePath will create the relative path to the ObjectPool from the storage path.
func (*ObjectPool) GetStorageName ¶
func (o *ObjectPool) GetStorageName() string
GetStorageName exposes the shard name, to satisfy the repository.GitRepo interface
func (*ObjectPool) Init ¶
func (o *ObjectPool) Init(ctx context.Context) (err error)
Init will initialize an empty pool repository if one already exists, it will do nothing
func (*ObjectPool) IsValid ¶
func (o *ObjectPool) IsValid() bool
IsValid checks if a repository exists, and if its valid.
func (*ObjectPool) Link ¶
Link will link the given repository to the object pool. This is done by writing the object pool's path relative to the repository into the repository's "alternates" file. This does not trigger deduplication, which is the responsibility of the caller.
func (*ObjectPool) LinkedToRepository ¶
func (o *ObjectPool) LinkedToRepository(repo *localrepo.Repo) (bool, error)
LinkedToRepository tests if a repository is linked to an object pool
func (*ObjectPool) Remove ¶
func (o *ObjectPool) Remove(ctx context.Context) (err error)
Remove will remove the pool, and all its contents without preparing and/or updating the repositories depending on this object pool Subdirectories will remain to exist, and will never be cleaned up, even when these are empty.
func (*ObjectPool) ToProto ¶
func (o *ObjectPool) ToProto() *gitalypb.ObjectPool
ToProto returns a new struct that is the protobuf definition of the ObjectPool