diff options
Diffstat (limited to 'repository/objects.go')
| -rw-r--r-- | repository/objects.go | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/repository/objects.go b/repository/objects.go deleted file mode 100644 index 2527363a..00000000 --- a/repository/objects.go +++ /dev/null @@ -1,100 +0,0 @@ -package repository - -import ( - "fmt" - "os" - - objectid "codeberg.org/lindenii/furgit/object/id" - objectstore "codeberg.org/lindenii/furgit/object/store" - objectdual "codeberg.org/lindenii/furgit/object/store/dual" - objectloose "codeberg.org/lindenii/furgit/object/store/loose" - objectpacked "codeberg.org/lindenii/furgit/object/store/packed" -) - -// openObjectStore opens the roots and object stores of both -// the loose and packed stores for a particular repo root and -// object ID hashing algorithm. -// -// Since real object store implementations do not take ownership of -// the roots given to them, and since composite object stores do not -// take ownership of the object stores that they consist of, all -// of them are returned and should be closed by the caller. -// -//nolint:ireturn -func openObjectStore( - root *os.Root, - algo objectid.Algorithm, -) ( - objects *objectdual.Dual, - objectsRoot *os.Root, - objectsPackRoot *os.Root, - objectsLoose *objectloose.Store, - objectsPacked *objectpacked.Store, - err error, -) { - objectsRoot, err = root.OpenRoot("objects") - if err != nil { - return nil, nil, nil, nil, nil, fmt.Errorf("repository: open objects: %w", err) - } - - objectsLoose, err = objectloose.New(objectsRoot, algo) - if err != nil { - _ = objectsRoot.Close() - - return nil, nil, nil, nil, nil, err - } - - err = objectsRoot.Mkdir("pack", 0o755) - if err != nil && !os.IsExist(err) { - _ = objectsLoose.Close() - _ = objectsRoot.Close() - - return nil, nil, nil, nil, nil, fmt.Errorf("repository: create objects/pack: %w", err) - } - - objectsPackRoot, err = objectsRoot.OpenRoot("pack") - if err != nil { - _ = objectsLoose.Close() - _ = objectsRoot.Close() - - return nil, nil, nil, nil, nil, fmt.Errorf("repository: open objects/pack: %w", err) - } - - objectsPacked, err = objectpacked.New( - objectsPackRoot, - algo, - objectpacked.Options{ - RefreshPolicy: objectpacked.RefreshPolicyNever, - WriteRev: true, - }, - ) - if err != nil { - _ = objectsPackRoot.Close() - _ = objectsLoose.Close() - _ = objectsRoot.Close() - - return nil, nil, nil, nil, nil, err - } - - objects = objectdual.New(objectsLoose, objectsPacked) - - return objects, objectsRoot, objectsPackRoot, objectsLoose, objectsPacked, nil -} - -// Objects returns the configured object store. -// -// Use Objects for direct object-ID lookups, object headers, sizes, raw object -// bytes, streamed object contents, object writes, pack ingestion, and -// coordinated quarantines. Callers who want typed object values should usually -// prefer [Repository.Fetcher]. -// -// Labels: Life-Parent. -// -//nolint:ireturn -func (repo *Repository) Objects() interface { - objectstore.Reader - objectstore.Writer - objectstore.Quarantiner -} { - return repo.objects -} |
