aboutsummaryrefslogtreecommitdiff
path: root/refstore/reading.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-07 16:25:36 +0800
committerGravatar Runxi Yu2026-03-07 16:43:59 +0800
commita0d2b3a238d6e5dcdedb816cf838dd8fe003c632 (patch)
tree98b4026797c7e731f3ce01bd11dd102e58b116d0 /refstore/reading.go
parenttestgit: While I'm at it, add a tiny path escape hatch just for occasional use (diff)
signatureNo signature
refstore: Split files
Diffstat (limited to 'refstore/reading.go')
-rw-r--r--refstore/reading.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/refstore/reading.go b/refstore/reading.go
new file mode 100644
index 00000000..eb499deb
--- /dev/null
+++ b/refstore/reading.go
@@ -0,0 +1,29 @@
+package refstore
+
+import "codeberg.org/lindenii/furgit/ref"
+
+// ReadingStore reads Git references.
+type ReadingStore interface {
+ // Resolve resolves a reference name to either a symbolic or detached ref.
+ //
+ // Implementations should return value forms (ref.Detached or ref.Symbolic),
+ // not pointer forms.
+ // If the reference does not exist, implementations should return
+ // ErrReferenceNotFound.
+ Resolve(name string) (ref.Ref, error)
+ // ResolveFully resolves a reference name to a detached object ID.
+ //
+ // Implementations may use backend-local lookup semantics for symbolic hops.
+ // Callers that need cross-backend symbolic resolution (for example in a
+ // chain of stores) should prefer repeatedly calling Resolve.
+ //
+ // ResolveFully resolves symbolic references only. It does not imply peeling
+ // annotated tag objects.
+ ResolveFully(name string) (ref.Detached, error)
+ // List returns references matching pattern.
+ //
+ // The exact pattern language is backend-defined.
+ List(pattern string) ([]ref.Ref, error)
+ // Close releases resources associated with the store.
+ Close() error
+}