aboutsummaryrefslogtreecommitdiff
path: root/repository/open.go
diff options
context:
space:
mode:
Diffstat (limited to 'repository/open.go')
-rw-r--r--repository/open.go17
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
}