diff options
| author | 2026-02-21 11:25:50 +0800 | |
|---|---|---|
| committer | 2026-02-21 11:25:50 +0800 | |
| commit | 5682de102bdd28741d0b7e371e8ee9bbd003d045 (patch) | |
| tree | 9ce4b8c704c4a5d8b5f0f9537e19a2638e1ff871 /refstore/loose/store.go | |
| parent | testgit: Add ref-related functions (diff) | |
| signature | No signature | |
refstore/loose: Add loose refs implementation
Diffstat (limited to 'refstore/loose/store.go')
| -rw-r--r-- | refstore/loose/store.go | 37 |
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 +} |
