diff options
Diffstat (limited to 'repository/open.go')
| -rw-r--r-- | repository/open.go | 17 |
1 files changed, 15 insertions, 2 deletions
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 } |
