From 48ff647cf4a8bb8f23fcd6b8616f56a8ef72b980 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Wed, 25 Mar 2026 14:31:16 +0000 Subject: *: refstore -> ref/store --- ref/store/reading.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 ref/store/reading.go (limited to 'ref/store/reading.go') diff --git a/ref/store/reading.go b/ref/store/reading.go new file mode 100644 index 00000000..3444f07f --- /dev/null +++ b/ref/store/reading.go @@ -0,0 +1,34 @@ +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. Returned refs do not borrow the store. + // If the reference does not exist, implementations should return + // ErrReferenceNotFound. + Resolve(name string) (ref.Ref, error) + // ResolveToDetached 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. + // + // ResolveToDetached resolves symbolic references only. It does not imply peeling + // annotated tag objects. + ResolveToDetached(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. + // + // Transactions and batches borrowing the store are invalid after Close. + // + // Repeated calls to Close are undefined behavior unless the implementation + // explicitly documents otherwise. + Close() error +} -- cgit v1.3.1-10-gc9f91