aboutsummaryrefslogtreecommitdiff
path: root/refstore/loose/store.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-02-21 11:25:50 +0800
committerGravatar Runxi Yu2026-02-21 11:25:50 +0800
commit5682de102bdd28741d0b7e371e8ee9bbd003d045 (patch)
tree9ce4b8c704c4a5d8b5f0f9537e19a2638e1ff871 /refstore/loose/store.go
parenttestgit: Add ref-related functions (diff)
signatureNo signature
refstore/loose: Add loose refs implementation
Diffstat (limited to 'refstore/loose/store.go')
-rw-r--r--refstore/loose/store.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/refstore/loose/store.go b/refstore/loose/store.go
new file mode 100644
index 00000000..4102ea0d
--- /dev/null
+++ b/refstore/loose/store.go
@@ -0,0 +1,37 @@
+// Package loose provides read access to loose Git references.
+package loose
+
+import (
+ "os"
+
+ "codeberg.org/lindenii/furgit/objectid"
+ "codeberg.org/lindenii/furgit/refstore"
+)
+
+// Store reads loose references from a repository root.
+//
+// Store does not own root. Callers are responsible for closing root.
+type Store struct {
+ // root is the repository root capability.
+ root *os.Root
+ // algo is the object ID algorithm used by this repository.
+ algo objectid.Algorithm
+}
+
+var _ refstore.Store = (*Store)(nil)
+
+// New creates a loose ref store rooted at a repository root.
+func New(root *os.Root, algo objectid.Algorithm) (*Store, error) {
+ if algo.Size() == 0 {
+ return nil, objectid.ErrInvalidAlgorithm
+ }
+ return &Store{
+ root: root,
+ algo: algo,
+ }, nil
+}
+
+// Close releases resources associated with the backend.
+func (store *Store) Close() error {
+ return nil
+}