From a0d2b3a238d6e5dcdedb816cf838dd8fe003c632 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 7 Mar 2026 16:25:36 +0800 Subject: refstore: Split files --- refstore/reading.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 refstore/reading.go (limited to 'refstore/reading.go') 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 +} -- cgit v1.3.1-10-gc9f91