From ab6f8dde0cdc554084c4455c76feef0099db70d9 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 22 Mar 2026 23:10:37 +0000 Subject: *: Fixup ownership of compositional backends --- repository/close.go | 8 ++++---- repository/objects.go | 46 +++++++++------------------------------------- repository/open.go | 6 +++--- repository/repository.go | 15 ++++++++------- repository/write_loose.go | 2 +- 5 files changed, 25 insertions(+), 52 deletions(-) (limited to 'repository') diff --git a/repository/close.go b/repository/close.go index 9654918c..b76570bb 100644 --- a/repository/close.go +++ b/repository/close.go @@ -21,15 +21,15 @@ func (repo *Repository) Close() error { } } - if repo.objectsLooseForWritingOnly != nil { - err := repo.objectsLooseForWritingOnly.Close() + if repo.objectsPacked != nil { + err := repo.objectsPacked.Close() if err != nil { errs = append(errs, err) } } - if repo.objectsWriteRoot != nil { - err := repo.objectsWriteRoot.Close() + if repo.objectsLoose != nil { + err := repo.objectsLoose.Close() if err != nil { errs = append(errs, err) } diff --git a/repository/objects.go b/repository/objects.go index 207ac7f1..b7ca2094 100644 --- a/repository/objects.go +++ b/repository/objects.go @@ -20,8 +20,8 @@ func openObjectStore( objects objectstore.Store, objectsRoot *os.Root, objectsPackRoot *os.Root, - objectsLooseForWritingOnly *objectloose.Store, - objectsWriteRoot *os.Root, + objectsLoose *objectloose.Store, + objectsPacked *objectpacked.Store, err error, ) { objectsRoot, err = root.OpenRoot("objects") @@ -29,35 +29,33 @@ func openObjectStore( return nil, nil, nil, nil, nil, fmt.Errorf("repository: open objects: %w", err) } - looseStore, err := objectloose.New(objectsRoot, algo) + objectsLoose, err = objectloose.New(objectsRoot, algo) if err != nil { _ = objectsRoot.Close() return nil, nil, nil, nil, nil, err } - backends := []objectstore.Store{looseStore} + backends := []objectstore.Store{objectsLoose} objectsPackRoot, err = objectsRoot.OpenRoot("pack") if err == nil { - var packedStore *objectpacked.Store - - packedStore, err = objectpacked.New( + objectsPacked, err = objectpacked.New( objectsPackRoot, algo, objectpacked.Options{RefreshPolicy: objectpacked.RefreshPolicyNever}, ) if err != nil { _ = objectsPackRoot.Close() - _ = looseStore.Close() + _ = objectsLoose.Close() _ = objectsRoot.Close() return nil, nil, nil, nil, nil, err } - backends = append(backends, packedStore) + backends = append(backends, objectsPacked) } else if !errors.Is(err, os.ErrNotExist) { - _ = looseStore.Close() + _ = objectsLoose.Close() _ = objectsRoot.Close() return nil, nil, nil, nil, nil, fmt.Errorf("repository: open objects/pack: %w", err) @@ -65,33 +63,7 @@ func openObjectStore( objects = objectmix.New(backends...) - objectsWriteRoot, err = root.OpenRoot("objects") - if err != nil { - _ = objects.Close() - if objectsPackRoot != nil { - _ = objectsPackRoot.Close() - } - - _ = objectsRoot.Close() - - return nil, nil, nil, nil, nil, fmt.Errorf("repository: open objects for loose writing: %w", err) - } - - objectsLooseForWritingOnly, err = objectloose.New(objectsWriteRoot, algo) - if err != nil { - _ = objects.Close() - - _ = objectsWriteRoot.Close() - if objectsPackRoot != nil { - _ = objectsPackRoot.Close() - } - - _ = objectsRoot.Close() - - return nil, nil, nil, nil, nil, err - } - - return objects, objectsRoot, objectsPackRoot, objectsLooseForWritingOnly, objectsWriteRoot, nil + return objects, objectsRoot, objectsPackRoot, objectsLoose, objectsPacked, nil } // Objects returns the configured object store. diff --git a/repository/open.go b/repository/open.go index f7f2dd1c..c7dca578 100644 --- a/repository/open.go +++ b/repository/open.go @@ -33,7 +33,7 @@ func Open(root *os.Root) (repo *Repository, err error) { repo.algo = algo - objects, objectsRoot, objectsPackRoot, objectsLooseForWritingOnly, objectsWriteRoot, err := openObjectStore(root, algo) + objects, objectsRoot, objectsPackRoot, objectsLoose, objectsPacked, err := openObjectStore(root, algo) if err != nil { return nil, err } @@ -41,8 +41,8 @@ func Open(root *os.Root) (repo *Repository, err error) { repo.objects = objects repo.objectsRoot = objectsRoot repo.objectsPackRoot = objectsPackRoot - repo.objectsLooseForWritingOnly = objectsLooseForWritingOnly - repo.objectsWriteRoot = objectsWriteRoot + repo.objectsLoose = objectsLoose + repo.objectsPacked = objectsPacked refRoot, err := root.OpenRoot(".") if err != nil { diff --git a/repository/repository.go b/repository/repository.go index f9bb2d2b..c56827cd 100644 --- a/repository/repository.go +++ b/repository/repository.go @@ -8,6 +8,7 @@ import ( "codeberg.org/lindenii/furgit/objectid" "codeberg.org/lindenii/furgit/objectstore" objectloose "codeberg.org/lindenii/furgit/objectstore/loose" + objectpacked "codeberg.org/lindenii/furgit/objectstore/packed" "codeberg.org/lindenii/furgit/refstore" ) @@ -19,11 +20,11 @@ type Repository struct { config *config.Config algo objectid.Algorithm - objects objectstore.Store - objectsRoot *os.Root - objectsPackRoot *os.Root - objectsLooseForWritingOnly *objectloose.Store - objectsWriteRoot *os.Root - refRoot *os.Root - refs refstore.ReadWriteStore + objects objectstore.Store + objectsRoot *os.Root + objectsPackRoot *os.Root + objectsLoose *objectloose.Store + objectsPacked *objectpacked.Store + refRoot *os.Root + refs refstore.ReadWriteStore } diff --git a/repository/write_loose.go b/repository/write_loose.go index 86f73e52..bd8d7f57 100644 --- a/repository/write_loose.go +++ b/repository/write_loose.go @@ -5,5 +5,5 @@ import ( ) func (repo *Repository) LooseStoreForWriting() *objectloose.Store { - return repo.objectsLooseForWritingOnly + return repo.objectsLoose } -- cgit v1.3.1-10-gc9f91