ref: 645f1df93518a8522e735113eaf947eac421a911
parent: c2cb06aa23a1769a0d84756acccf1ac1358f61ef
author: Runxi Yu <me@runxiyu.org>
date: Tue Mar 10 10:14:00 EDT 2026
object/stored: Move from objectstored
--- a/cmd/show-object/main.go
+++ b/cmd/show-object/main.go
@@ -8,8 +8,8 @@
"os"
"strings"
+ "codeberg.org/lindenii/furgit/object/stored"
"codeberg.org/lindenii/furgit/objectid"
- "codeberg.org/lindenii/furgit/objectstored"
"codeberg.org/lindenii/furgit/objecttype"
"codeberg.org/lindenii/furgit/repository"
)
@@ -50,7 +50,7 @@
return fmt.Errorf("resolve %q: %w", *name, err)}
- stored, err := repo.ReadStored(id)
+ s, err := repo.ReadStored(id)
if err != nil {_ = repo.Close()
@@ -57,7 +57,7 @@
return fmt.Errorf("read object %s: %w", id, err)}
- printStored(stored)
+ printStored(s)
err = repo.Close()
if err != nil {@@ -81,11 +81,11 @@
return resolved.ID, nil
}
-func printStored(stored objectstored.StoredObject) {+func printStored(s stored.StoredObject) {var b strings.Builder
- id := stored.ID()
- ty := stored.Object().ObjectType()
+ id := s.ID()
+ ty := s.Object().ObjectType()
tyName, ok := objecttype.Name(ty)
if !ok {@@ -95,20 +95,20 @@
fmt.Fprintf(&b, "id: %s\n", id)
fmt.Fprintf(&b, "type: %s\n", tyName)
- switch stored := stored.(type) {- case *objectstored.StoredBlob:
- blob := stored.Blob()
+ switch s := s.(type) {+ case *stored.StoredBlob:
+ blob := s.Blob()
fmt.Fprintf(&b, "size: %d\n", len(blob.Data))
fmt.Fprintf(&b, "data: %q\n", string(blob.Data))
- case *objectstored.StoredTree:
- tree := stored.Tree()
+ case *stored.StoredTree:
+ tree := s.Tree()
fmt.Fprintf(&b, "entries: %d\n", len(tree.Entries))
for _, entry := range tree.Entries {fmt.Fprintf(&b, "%06o %s\t%s\n", entry.Mode, entry.ID, entry.Name)
}
- case *objectstored.StoredCommit:
- commit := stored.Commit()
+ case *stored.StoredCommit:
+ commit := s.Commit()
fmt.Fprintf(&b, "tree: %s\n", commit.Tree)
for _, parent := range commit.Parents {@@ -118,8 +118,8 @@
fmt.Fprintf(&b, "author: %s <%s>\n", commit.Author.Name, commit.Author.Email)
fmt.Fprintf(&b, "committer: %s <%s>\n", commit.Committer.Name, commit.Committer.Email)
fmt.Fprintf(&b, "message:\n%s\n", string(commit.Message))
- case *objectstored.StoredTag:
- tag := stored.Tag()
+ case *stored.StoredTag:
+ tag := s.Tag()
targetTy, ok := objecttype.Name(tag.TargetType)
if !ok {@@ -135,7 +135,7 @@
fmt.Fprintf(&b, "message:\n%s\n", string(tag.Message))
default:
- fmt.Fprintf(&b, "%#v\n", stored.Object())
+ fmt.Fprintf(&b, "%#v\n", s.Object())
}
_, _ = os.Stdout.WriteString(b.String())
--- /dev/null
+++ b/object/stored/blob.go
@@ -1,0 +1,35 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredBlob is a parsed blob paired with its storage ID.
+//
+// This Blob object is fully materialized in memory.
+// Consider using objectstore/Store.ReadReaderContent.
+type StoredBlob struct {+ id objectid.ObjectID
+ blob *object.Blob
+}
+
+// NewStoredBlob creates one stored blob wrapper.
+func NewStoredBlob(id objectid.ObjectID, blob *object.Blob) *StoredBlob {+ return &StoredBlob{id: id, blob: blob}+}
+
+// ID returns the object ID this blob was loaded from.
+func (stored *StoredBlob) ID() objectid.ObjectID {+ return stored.id
+}
+
+// Object returns the parsed blob as the generic object interface.
+func (stored *StoredBlob) Object() object.Object {+ return stored.blob
+}
+
+// Blob returns the parsed blob value.
+func (stored *StoredBlob) Blob() *object.Blob {+ return stored.blob
+}
--- /dev/null
+++ b/object/stored/commit.go
@@ -1,0 +1,32 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredCommit is a parsed commit paired with its storage ID.
+type StoredCommit struct {+ id objectid.ObjectID
+ commit *object.Commit
+}
+
+// NewStoredCommit creates one stored commit wrapper.
+func NewStoredCommit(id objectid.ObjectID, commit *object.Commit) *StoredCommit {+ return &StoredCommit{id: id, commit: commit}+}
+
+// ID returns the object ID this commit was loaded from.
+func (stored *StoredCommit) ID() objectid.ObjectID {+ return stored.id
+}
+
+// Object returns the parsed commit as the generic object interface.
+func (stored *StoredCommit) Object() object.Object {+ return stored.commit
+}
+
+// Commit returns the parsed commit value.
+func (stored *StoredCommit) Commit() *object.Commit {+ return stored.commit
+}
--- /dev/null
+++ b/object/stored/object.go
@@ -1,0 +1,14 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredObject is a parsed object paired with its storage ID.
+type StoredObject interface {+ // ID returns the object ID the object was loaded from.
+ ID() objectid.ObjectID
+ // Object returns the parsed object value.
+ Object() object.Object
+}
--- /dev/null
+++ b/object/stored/objectstored.go
@@ -1,0 +1,32 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredTag is a parsed tag paired with its storage ID.
+type StoredTag struct {+ id objectid.ObjectID
+ tag *object.Tag
+}
+
+// NewStoredTag creates one stored tag wrapper.
+func NewStoredTag(id objectid.ObjectID, tag *object.Tag) *StoredTag {+ return &StoredTag{id: id, tag: tag}+}
+
+// ID returns the object ID this tag was loaded from.
+func (stored *StoredTag) ID() objectid.ObjectID {+ return stored.id
+}
+
+// Object returns the parsed tag as the generic object interface.
+func (stored *StoredTag) Object() object.Object {+ return stored.tag
+}
+
+// Tag returns the parsed tag value.
+func (stored *StoredTag) Tag() *object.Tag {+ return stored.tag
+}
--- /dev/null
+++ b/object/stored/stored.go
@@ -1,0 +1,2 @@
+// Package stored wraps parsed objects with their storage object IDs.
+package stored
--- /dev/null
+++ b/object/stored/tree.go
@@ -1,0 +1,32 @@
+package stored
+
+import (
+ "codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/objectid"
+)
+
+// StoredTree is a parsed tree paired with its storage ID.
+type StoredTree struct {+ id objectid.ObjectID
+ tree *object.Tree
+}
+
+// NewStoredTree creates one stored tree wrapper.
+func NewStoredTree(id objectid.ObjectID, tree *object.Tree) *StoredTree {+ return &StoredTree{id: id, tree: tree}+}
+
+// ID returns the object ID this tree was loaded from.
+func (stored *StoredTree) ID() objectid.ObjectID {+ return stored.id
+}
+
+// Object returns the parsed tree as the generic object interface.
+func (stored *StoredTree) Object() object.Object {+ return stored.tree
+}
+
+// Tree returns the parsed tree value.
+func (stored *StoredTree) Tree() *object.Tree {+ return stored.tree
+}
--- a/objectstored/blob.go
+++ /dev/null
@@ -1,35 +1,0 @@
-package objectstored
-
-import (
- "codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectid"
-)
-
-// StoredBlob is a parsed blob paired with its storage ID.
-//
-// This Blob object is fully materialized in memory.
-// Consider using objectstore/Store.ReadReaderContent.
-type StoredBlob struct {- id objectid.ObjectID
- blob *object.Blob
-}
-
-// NewStoredBlob creates one stored blob wrapper.
-func NewStoredBlob(id objectid.ObjectID, blob *object.Blob) *StoredBlob {- return &StoredBlob{id: id, blob: blob}-}
-
-// ID returns the object ID this blob was loaded from.
-func (stored *StoredBlob) ID() objectid.ObjectID {- return stored.id
-}
-
-// Object returns the parsed blob as the generic object interface.
-func (stored *StoredBlob) Object() object.Object {- return stored.blob
-}
-
-// Blob returns the parsed blob value.
-func (stored *StoredBlob) Blob() *object.Blob {- return stored.blob
-}
--- a/objectstored/commit.go
+++ /dev/null
@@ -1,32 +1,0 @@
-package objectstored
-
-import (
- "codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectid"
-)
-
-// StoredCommit is a parsed commit paired with its storage ID.
-type StoredCommit struct {- id objectid.ObjectID
- commit *object.Commit
-}
-
-// NewStoredCommit creates one stored commit wrapper.
-func NewStoredCommit(id objectid.ObjectID, commit *object.Commit) *StoredCommit {- return &StoredCommit{id: id, commit: commit}-}
-
-// ID returns the object ID this commit was loaded from.
-func (stored *StoredCommit) ID() objectid.ObjectID {- return stored.id
-}
-
-// Object returns the parsed commit as the generic object interface.
-func (stored *StoredCommit) Object() object.Object {- return stored.commit
-}
-
-// Commit returns the parsed commit value.
-func (stored *StoredCommit) Commit() *object.Commit {- return stored.commit
-}
--- a/objectstored/object.go
+++ /dev/null
@@ -1,14 +1,0 @@
-package objectstored
-
-import (
- "codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectid"
-)
-
-// StoredObject is a parsed object paired with its storage ID.
-type StoredObject interface {- // ID returns the object ID the object was loaded from.
- ID() objectid.ObjectID
- // Object returns the parsed object value.
- Object() object.Object
-}
--- a/objectstored/objectstored.go
+++ /dev/null
@@ -1,32 +1,0 @@
-package objectstored
-
-import (
- "codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectid"
-)
-
-// StoredTag is a parsed tag paired with its storage ID.
-type StoredTag struct {- id objectid.ObjectID
- tag *object.Tag
-}
-
-// NewStoredTag creates one stored tag wrapper.
-func NewStoredTag(id objectid.ObjectID, tag *object.Tag) *StoredTag {- return &StoredTag{id: id, tag: tag}-}
-
-// ID returns the object ID this tag was loaded from.
-func (stored *StoredTag) ID() objectid.ObjectID {- return stored.id
-}
-
-// Object returns the parsed tag as the generic object interface.
-func (stored *StoredTag) Object() object.Object {- return stored.tag
-}
-
-// Tag returns the parsed tag value.
-func (stored *StoredTag) Tag() *object.Tag {- return stored.tag
-}
--- a/objectstored/stored.go
+++ /dev/null
@@ -1,2 +1,0 @@
-// Package objectstored wraps parsed objects with their storage object IDs.
-package objectstored
--- a/objectstored/tree.go
+++ /dev/null
@@ -1,32 +1,0 @@
-package objectstored
-
-import (
- "codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectid"
-)
-
-// StoredTree is a parsed tree paired with its storage ID.
-type StoredTree struct {- id objectid.ObjectID
- tree *object.Tree
-}
-
-// NewStoredTree creates one stored tree wrapper.
-func NewStoredTree(id objectid.ObjectID, tree *object.Tree) *StoredTree {- return &StoredTree{id: id, tree: tree}-}
-
-// ID returns the object ID this tree was loaded from.
-func (stored *StoredTree) ID() objectid.ObjectID {- return stored.id
-}
-
-// Object returns the parsed tree as the generic object interface.
-func (stored *StoredTree) Object() object.Object {- return stored.tree
-}
-
-// Tree returns the parsed tree value.
-func (stored *StoredTree) Tree() *object.Tree {- return stored.tree
-}
--- a/repository/stored.go
+++ b/repository/stored.go
@@ -4,8 +4,8 @@
"fmt"
"codeberg.org/lindenii/furgit/object"
+ "codeberg.org/lindenii/furgit/object/stored"
"codeberg.org/lindenii/furgit/objectid"
- "codeberg.org/lindenii/furgit/objectstored"
"codeberg.org/lindenii/furgit/objecttype"
)
@@ -12,7 +12,7 @@
// ReadStored reads, parses, and wraps one object by ID.
//
//nolint:ireturn
-func (repo *Repository) ReadStored(id objectid.ObjectID) (objectstored.StoredObject, error) {+func (repo *Repository) ReadStored(id objectid.ObjectID) (stored.StoredObject, error) {parsed, err := repo.readParsedObject(id)
if err != nil {return nil, err
@@ -20,13 +20,13 @@
switch parsed := parsed.(type) {case *object.Blob:
- return objectstored.NewStoredBlob(id, parsed), nil
+ return stored.NewStoredBlob(id, parsed), nil
case *object.Tree:
- return objectstored.NewStoredTree(id, parsed), nil
+ return stored.NewStoredTree(id, parsed), nil
case *object.Commit:
- return objectstored.NewStoredCommit(id, parsed), nil
+ return stored.NewStoredCommit(id, parsed), nil
case *object.Tag:
- return objectstored.NewStoredTag(id, parsed), nil
+ return stored.NewStoredTag(id, parsed), nil
default:
return nil, fmt.Errorf("repository: unsupported parsed object type %T", parsed)}
@@ -33,15 +33,15 @@
}
// ReadStoredBlob reads and parses a blob object by ID.
-func (repo *Repository) ReadStoredBlob(id objectid.ObjectID) (*objectstored.StoredBlob, error) {- stored, err := repo.ReadStored(id)
+func (repo *Repository) ReadStoredBlob(id objectid.ObjectID) (*stored.StoredBlob, error) {+ s, err := repo.ReadStored(id)
if err != nil {return nil, err
}
- blob, ok := stored.(*objectstored.StoredBlob)
+ blob, ok := s.(*stored.StoredBlob)
if !ok {- return nil, fmt.Errorf("repository: expected blob object %s, got %v", id, stored.Object().ObjectType())+ return nil, fmt.Errorf("repository: expected blob object %s, got %v", id, s.Object().ObjectType())}
return blob, nil
@@ -48,15 +48,15 @@
}
// ReadStoredTree reads and parses a tree object by ID.
-func (repo *Repository) ReadStoredTree(id objectid.ObjectID) (*objectstored.StoredTree, error) {- stored, err := repo.ReadStored(id)
+func (repo *Repository) ReadStoredTree(id objectid.ObjectID) (*stored.StoredTree, error) {+ s, err := repo.ReadStored(id)
if err != nil {return nil, err
}
- tree, ok := stored.(*objectstored.StoredTree)
+ tree, ok := s.(*stored.StoredTree)
if !ok {- return nil, fmt.Errorf("repository: expected tree object %s, got %v", id, stored.Object().ObjectType())+ return nil, fmt.Errorf("repository: expected tree object %s, got %v", id, s.Object().ObjectType())}
return tree, nil
@@ -63,15 +63,15 @@
}
// ReadStoredCommit reads and parses a commit object by ID.
-func (repo *Repository) ReadStoredCommit(id objectid.ObjectID) (*objectstored.StoredCommit, error) {- stored, err := repo.ReadStored(id)
+func (repo *Repository) ReadStoredCommit(id objectid.ObjectID) (*stored.StoredCommit, error) {+ s, err := repo.ReadStored(id)
if err != nil {return nil, err
}
- commit, ok := stored.(*objectstored.StoredCommit)
+ commit, ok := s.(*stored.StoredCommit)
if !ok {- return nil, fmt.Errorf("repository: expected commit object %s, got %v", id, stored.Object().ObjectType())+ return nil, fmt.Errorf("repository: expected commit object %s, got %v", id, s.Object().ObjectType())}
return commit, nil
@@ -78,15 +78,15 @@
}
// ReadStoredTag reads and parses a tag object by ID.
-func (repo *Repository) ReadStoredTag(id objectid.ObjectID) (*objectstored.StoredTag, error) {- stored, err := repo.ReadStored(id)
+func (repo *Repository) ReadStoredTag(id objectid.ObjectID) (*stored.StoredTag, error) {+ s, err := repo.ReadStored(id)
if err != nil {return nil, err
}
- tag, ok := stored.(*objectstored.StoredTag)
+ tag, ok := s.(*stored.StoredTag)
if !ok {- return nil, fmt.Errorf("repository: expected tag object %s, got %v", id, stored.Object().ObjectType())+ return nil, fmt.Errorf("repository: expected tag object %s, got %v", id, s.Object().ObjectType())}
return tag, nil
--- a/repository/tree.go
+++ b/repository/tree.go
@@ -5,7 +5,7 @@
"fmt"
"codeberg.org/lindenii/furgit/object"
- "codeberg.org/lindenii/furgit/objectstored"
+ "codeberg.org/lindenii/furgit/object/stored"
)
// ResolveTreeEntry resolves one path within a stored root tree.
@@ -12,7 +12,7 @@
//
// parts must contain at least one path segment. Intermediate segments must be
// tree entries.
-func (repo *Repository) ResolveTreeEntry(tree *objectstored.StoredTree, parts [][]byte) (object.TreeEntry, error) {+func (repo *Repository) ResolveTreeEntry(tree *stored.StoredTree, parts [][]byte) (object.TreeEntry, error) { if tree == nil { return object.TreeEntry{}, errors.New("repository: nil root tree")}
--
⑨