filesystem

package
v5.4.3 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2022 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package filesystem is a storage backend base on filesystems

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewPackfileIter

func NewPackfileIter(
	fs billy.Filesystem,
	f billy.File,
	idxFile billy.File,
	t plumbing.ObjectType,
	keepPack bool,
	largeObjectThreshold int64,
) (storer.EncodedObjectIter, error)

NewPackfileIter returns a new EncodedObjectIter for the provided packfile and object type. Packfile and index file will be closed after they're used. If keepPack is true the packfile won't be closed after the iteration finished.

Types

type ConfigStorage

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

func (*ConfigStorage) Config

func (c *ConfigStorage) Config() (conf *config.Config, err error)

func (*ConfigStorage) SetConfig

func (c *ConfigStorage) SetConfig(cfg *config.Config) (err error)

type IndexStorage

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

func (*IndexStorage) Index

func (s *IndexStorage) Index() (i *index.Index, err error)

func (*IndexStorage) SetIndex

func (s *IndexStorage) SetIndex(idx *index.Index) (err error)

type ModuleStorage

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

func (*ModuleStorage) Module

func (s *ModuleStorage) Module(name string) (storage.Storer, error)

type ObjectStorage

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

func NewObjectStorage

func NewObjectStorage(dir *dotgit.DotGit, objectCache cache.Object) *ObjectStorage

NewObjectStorage creates a new ObjectStorage with the given .git directory and cache.

func NewObjectStorageWithOptions

func NewObjectStorageWithOptions(dir *dotgit.DotGit, objectCache cache.Object, ops Options) *ObjectStorage

NewObjectStorageWithOptions creates a new ObjectStorage with the given .git directory, cache and extra options

func (*ObjectStorage) Close

func (s *ObjectStorage) Close() error

Close closes all opened files.

func (*ObjectStorage) DeleteLooseObject

func (s *ObjectStorage) DeleteLooseObject(hash plumbing.Hash) error

func (*ObjectStorage) DeleteOldObjectPackAndIndex

func (s *ObjectStorage) DeleteOldObjectPackAndIndex(h plumbing.Hash, t time.Time) error

func (*ObjectStorage) DeltaObject

DeltaObject returns the object with the given hash, by searching for it in the packfile and the git object directories.

func (*ObjectStorage) EncodedObject

EncodedObject returns the object with the given hash, by searching for it in the packfile and the git object directories.

func (*ObjectStorage) EncodedObjectSize

func (s *ObjectStorage) EncodedObjectSize(h plumbing.Hash) (
	size int64, err error)

EncodedObjectSize returns the plaintext size of the given object, without actually reading the full object data from storage.

func (*ObjectStorage) ForEachObjectHash

func (s *ObjectStorage) ForEachObjectHash(fun func(plumbing.Hash) error) error

func (*ObjectStorage) HasEncodedObject

func (s *ObjectStorage) HasEncodedObject(h plumbing.Hash) (err error)

HasEncodedObject returns nil if the object exists, without actually reading the object data from storage.

func (*ObjectStorage) HashesWithPrefix

func (s *ObjectStorage) HashesWithPrefix(prefix []byte) ([]plumbing.Hash, error)

func (*ObjectStorage) IterEncodedObjects

func (s *ObjectStorage) IterEncodedObjects(t plumbing.ObjectType) (storer.EncodedObjectIter, error)

IterEncodedObjects returns an iterator for all the objects in the packfile with the given type.

func (*ObjectStorage) LooseObjectTime

func (s *ObjectStorage) LooseObjectTime(hash plumbing.Hash) (time.Time, error)

func (*ObjectStorage) NewEncodedObject

func (s *ObjectStorage) NewEncodedObject() plumbing.EncodedObject

func (*ObjectStorage) ObjectPacks

func (s *ObjectStorage) ObjectPacks() ([]plumbing.Hash, error)

func (*ObjectStorage) PackfileWriter

func (s *ObjectStorage) PackfileWriter() (io.WriteCloser, error)

func (*ObjectStorage) Reindex

func (s *ObjectStorage) Reindex()

Reindex indexes again all packfiles. Useful if git changed packfiles externally

func (*ObjectStorage) SetEncodedObject

func (s *ObjectStorage) SetEncodedObject(o plumbing.EncodedObject) (h plumbing.Hash, err error)

SetEncodedObject adds a new object to the storage.

type Options

type Options struct {
	// ExclusiveAccess means that the filesystem is not modified externally
	// while the repo is open.
	ExclusiveAccess bool
	// KeepDescriptors makes the file descriptors to be reused but they will
	// need to be manually closed calling Close().
	KeepDescriptors bool
	// MaxOpenDescriptors is the max number of file descriptors to keep
	// open. If KeepDescriptors is true, all file descriptors will remain open.
	MaxOpenDescriptors int
	// LargeObjectThreshold maximum object size (in bytes) that will be read in to memory.
	// If left unset or set to 0 there is no limit
	LargeObjectThreshold int64
}

Options holds configuration for the storage.

type ReferenceStorage

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

func (*ReferenceStorage) CheckAndSetReference

func (r *ReferenceStorage) CheckAndSetReference(ref, old *plumbing.Reference) error

func (*ReferenceStorage) CountLooseRefs

func (r *ReferenceStorage) CountLooseRefs() (int, error)

func (*ReferenceStorage) IterReferences

func (r *ReferenceStorage) IterReferences() (storer.ReferenceIter, error)

func (*ReferenceStorage) PackRefs

func (r *ReferenceStorage) PackRefs() error

func (*ReferenceStorage) Reference

func (*ReferenceStorage) RemoveReference

func (r *ReferenceStorage) RemoveReference(n plumbing.ReferenceName) error

func (*ReferenceStorage) SetReference

func (r *ReferenceStorage) SetReference(ref *plumbing.Reference) error

type ShallowStorage

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

ShallowStorage where the shallow commits are stored, an internal to manipulate the shallow file

func (*ShallowStorage) SetShallow

func (s *ShallowStorage) SetShallow(commits []plumbing.Hash) error

SetShallow save the shallows in the shallow file in the .git folder as one commit per line represented by 40-byte hexadecimal object terminated by a newline.

func (*ShallowStorage) Shallow

func (s *ShallowStorage) Shallow() ([]plumbing.Hash, error)

Shallow return the shallow commits reading from shallo file from .git

type Storage

type Storage struct {
	ObjectStorage
	ReferenceStorage
	IndexStorage
	ShallowStorage
	ConfigStorage
	ModuleStorage
	// contains filtered or unexported fields
}

Storage is an implementation of git.Storer that stores data on disk in the standard git format (this is, the .git directory). Zero values of this type are not safe to use, see the NewStorage function below.

func NewStorage

func NewStorage(fs billy.Filesystem, cache cache.Object) *Storage

NewStorage returns a new Storage backed by a given `fs.Filesystem` and cache.

func NewStorageWithOptions

func NewStorageWithOptions(fs billy.Filesystem, cache cache.Object, ops Options) *Storage

NewStorageWithOptions returns a new Storage with extra options, backed by a given `fs.Filesystem` and cache.

func (*Storage) Filesystem

func (s *Storage) Filesystem() billy.Filesystem

Filesystem returns the underlying filesystem

func (*Storage) Init

func (s *Storage) Init() error

Init initializes .git directory

Directories

Path Synopsis
https://github.com/git/git/blob/master/Documentation/gitrepository-layout.txt
https://github.com/git/git/blob/master/Documentation/gitrepository-layout.txt

Jump to

Keyboard shortcuts

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