From 7ddaf1eb2fde11a9e07df0215646c1dca08ccc50 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 22 Mar 2026 22:07:39 +0000 Subject: refstore, repository: Ownership/lifetimes fix --- repository/open.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'repository/open.go') diff --git a/repository/open.go b/repository/open.go index 797da7ad..f7f2dd1c 100644 --- a/repository/open.go +++ b/repository/open.go @@ -1,6 +1,11 @@ package repository -import "os" +import ( + "fmt" + "os" + + reffiles "codeberg.org/lindenii/furgit/refstore/files" +) // Open opens a repository and wires object/ref stores from its on-disk format. // @@ -39,12 +44,20 @@ func Open(root *os.Root) (repo *Repository, err error) { repo.objectsLooseForWritingOnly = objectsLooseForWritingOnly repo.objectsWriteRoot = objectsWriteRoot - refs, err := openRefStore(root, algo, detectPackedRefsTimeout(cfg)) + refRoot, err := root.OpenRoot(".") if err != nil { + return nil, fmt.Errorf("repository: open root for refs: %w", err) + } + + refs, err := reffiles.New(refRoot, algo, detectPackedRefsTimeout(cfg)) + if err != nil { + _ = refRoot.Close() + return nil, err } repo.refs = refs + repo.refRoot = refRoot return repo, nil } -- cgit v1.3.1-10-gc9f91