diff options
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | object/fetch/doc.go (renamed from object/resolve/doc.go) | 4 | ||||
| -rw-r--r-- | object/fetch/exact_blob.go (renamed from object/resolve/exact_blob.go) | 6 | ||||
| -rw-r--r-- | object/fetch/exact_blob_reader.go (renamed from object/resolve/exact_blob_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/exact_commit.go (renamed from object/resolve/exact_commit.go) | 6 | ||||
| -rw-r--r-- | object/fetch/exact_commit_reader.go (renamed from object/resolve/exact_commit_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/exact_object.go (renamed from object/resolve/exact_object.go) | 4 | ||||
| -rw-r--r-- | object/fetch/exact_reader.go (renamed from object/resolve/exact_reader.go) | 6 | ||||
| -rw-r--r-- | object/fetch/exact_tag.go (renamed from object/resolve/exact_tag.go) | 6 | ||||
| -rw-r--r-- | object/fetch/exact_tag_reader.go (renamed from object/resolve/exact_tag_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/exact_tree.go (renamed from object/resolve/exact_tree.go) | 6 | ||||
| -rw-r--r-- | object/fetch/exact_tree_reader.go (renamed from object/resolve/exact_tree_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/fetcher.go | 17 | ||||
| -rw-r--r-- | object/fetch/object_parse.go (renamed from object/resolve/object_parse.go) | 6 | ||||
| -rw-r--r-- | object/fetch/path.go (renamed from object/resolve/path.go) | 12 | ||||
| -rw-r--r-- | object/fetch/peel_to_blob.go (renamed from object/resolve/peel_to_blob.go) | 6 | ||||
| -rw-r--r-- | object/fetch/peel_to_blob_id.go (renamed from object/resolve/peel_to_blob_id.go) | 8 | ||||
| -rw-r--r-- | object/fetch/peel_to_blob_reader.go (renamed from object/resolve/peel_to_blob_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/peel_to_commit.go (renamed from object/resolve/peel_to_commit.go) | 6 | ||||
| -rw-r--r-- | object/fetch/peel_to_commit_id.go (renamed from object/resolve/peel_to_commit_id.go) | 8 | ||||
| -rw-r--r-- | object/fetch/peel_to_commit_reader.go (renamed from object/resolve/peel_to_commit_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/peel_to_tag.go (renamed from object/resolve/peel_to_tag.go) | 4 | ||||
| -rw-r--r-- | object/fetch/peel_to_tag_id.go (renamed from object/resolve/peel_to_tag_id.go) | 4 | ||||
| -rw-r--r-- | object/fetch/peel_to_tag_reader.go (renamed from object/resolve/peel_to_tag_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/peel_to_tree.go (renamed from object/resolve/peel_to_tree.go) | 6 | ||||
| -rw-r--r-- | object/fetch/peel_to_tree_id.go (renamed from object/resolve/peel_to_tree_id.go) | 8 | ||||
| -rw-r--r-- | object/fetch/peel_to_tree_reader.go (renamed from object/resolve/peel_to_tree_reader.go) | 4 | ||||
| -rw-r--r-- | object/fetch/treefs.go (renamed from object/resolve/treefs.go) | 6 | ||||
| -rw-r--r-- | object/fetch/treefs_entry.go (renamed from object/resolve/treefs_entry.go) | 6 | ||||
| -rw-r--r-- | object/fetch/treefs_info.go (renamed from object/resolve/treefs_info.go) | 2 | ||||
| -rw-r--r-- | object/fetch/treefs_new.go (renamed from object/resolve/treefs_new.go) | 4 | ||||
| -rw-r--r-- | object/fetch/treefs_op.go (renamed from object/resolve/treefs_op.go) | 2 | ||||
| -rw-r--r-- | object/fetch/treefs_open.go (renamed from object/resolve/treefs_open.go) | 4 | ||||
| -rw-r--r-- | object/fetch/treefs_path.go (renamed from object/resolve/treefs_path.go) | 2 | ||||
| -rw-r--r-- | object/fetch/treefs_readdir.go (renamed from object/resolve/treefs_readdir.go) | 2 | ||||
| -rw-r--r-- | object/fetch/treefs_readfile.go (renamed from object/resolve/treefs_readfile.go) | 4 | ||||
| -rw-r--r-- | object/fetch/treefs_stat.go (renamed from object/resolve/treefs_stat.go) | 2 | ||||
| -rw-r--r-- | object/fetch/treefs_sub.go (renamed from object/resolve/treefs_sub.go) | 2 | ||||
| -rw-r--r-- | object/fetch/treefs_test.go (renamed from object/resolve/treefs_test.go) | 6 | ||||
| -rw-r--r-- | object/resolve/resolver.go | 17 | ||||
| -rw-r--r-- | repository/resolver.go | 6 |
41 files changed, 113 insertions, 113 deletions
@@ -31,7 +31,7 @@ bare repository or a `.git` directory. Then, * A common pattern is to resolve a ref first, then pass the resulting object ID to the resolver. -* `repo.Resolver()` is the main object-facing API for most callers. +* `repo.Fetcher()` is the main object-facing API for most callers. * Use it when you want commits, trees, blobs, or tags as typed values. * It also handles peeling through annotated tags, resolving objects to the type you actually want, and walking paths inside trees. @@ -39,7 +39,7 @@ bare repository or a `.git` directory. Then, * If your goal is "show me this commit", "read this tree", "follow this tag", or "get me the file at this path", this is usually the right layer. -* `repo.Objects()` is the storage layer underneath `Resolver`. +* `repo.Objects()` is the storage layer underneath `Fetcher`. * Use it when you need to read object headers, read raw object contents, stream object data, or otherwise look up objects directly by ID. * Most callers who want to work with Git objects as commits, trees, blobs, or @@ -60,7 +60,7 @@ Note that: As a rule of thumb: * If you have a ref name, start with `repo.Refs()`. -* If you want typed objects or path-based access, use `repo.Resolver()`. +* If you want typed objects or path-based access, use `repo.Fetcher()`. * If you need raw object lookup by ID, object headers, or object streams, use `repo.Objects()`. diff --git a/object/resolve/doc.go b/object/fetch/doc.go index c4197087..e5ca33a9 100644 --- a/object/resolve/doc.go +++ b/object/fetch/doc.go @@ -1,5 +1,5 @@ // Package resolve resolves stored Git objects by exact type, by peeling // tree-ish or commit-ish references, and by path within trees. // -// A Resolver does not take ownership of the underlying object store. -package resolve +// A Fetcher does not take ownership of the underlying object store. +package fetch diff --git a/object/resolve/exact_blob.go b/object/fetch/exact_blob.go index 2cd8b298..96ededdc 100644 --- a/object/resolve/exact_blob.go +++ b/object/fetch/exact_blob.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -9,7 +9,7 @@ import ( ) // ExactBlob reads, parses, and wraps the blob at id. -func (r *Resolver) ExactBlob(id objectid.ObjectID) (*stored.Stored[*blob.Blob], error) { +func (r *Fetcher) ExactBlob(id objectid.ObjectID) (*stored.Stored[*blob.Blob], error) { parsed, err := r.parseObject(id) if err != nil { return nil, err @@ -17,7 +17,7 @@ func (r *Resolver) ExactBlob(id objectid.ObjectID) (*stored.Stored[*blob.Blob], blob, ok := parsed.(*blob.Blob) if !ok { - return nil, fmt.Errorf("object/resolve: expected blob object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected blob object %s, got %v", id, parsed.ObjectType()) } return stored.New(id, blob), nil diff --git a/object/resolve/exact_blob_reader.go b/object/fetch/exact_blob_reader.go index 5a702888..95f5e1aa 100644 --- a/object/resolve/exact_blob_reader.go +++ b/object/fetch/exact_blob_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -9,6 +9,6 @@ import ( // ExactBlobReader returns a reader for the content of the blob at id, // together with its content size in bytes. -func (r *Resolver) ExactBlobReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) ExactBlobReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { return r.exactReader(id, objecttype.TypeBlob, "blob") } diff --git a/object/resolve/exact_commit.go b/object/fetch/exact_commit.go index e6b379aa..d3f9dee1 100644 --- a/object/resolve/exact_commit.go +++ b/object/fetch/exact_commit.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -9,7 +9,7 @@ import ( ) // ExactCommit reads, parses, and wraps the commit at id. -func (r *Resolver) ExactCommit(id objectid.ObjectID) (*stored.Stored[*commit.Commit], error) { +func (r *Fetcher) ExactCommit(id objectid.ObjectID) (*stored.Stored[*commit.Commit], error) { parsed, err := r.parseObject(id) if err != nil { return nil, err @@ -17,7 +17,7 @@ func (r *Resolver) ExactCommit(id objectid.ObjectID) (*stored.Stored[*commit.Com commit, ok := parsed.(*commit.Commit) if !ok { - return nil, fmt.Errorf("object/resolve: expected commit object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected commit object %s, got %v", id, parsed.ObjectType()) } return stored.New(id, commit), nil diff --git a/object/resolve/exact_commit_reader.go b/object/fetch/exact_commit_reader.go index 6c05b016..5ccae4b1 100644 --- a/object/resolve/exact_commit_reader.go +++ b/object/fetch/exact_commit_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -11,6 +11,6 @@ import ( // together with its content size in bytes. // // Usage of this method is unusual. -func (r *Resolver) ExactCommitReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) ExactCommitReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { return r.exactReader(id, objecttype.TypeCommit, "commit") } diff --git a/object/resolve/exact_object.go b/object/fetch/exact_object.go index db6165f4..869d811f 100644 --- a/object/resolve/exact_object.go +++ b/object/fetch/exact_object.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "codeberg.org/lindenii/furgit/object" @@ -8,7 +8,7 @@ import ( // ExactObject reads, parses, and wraps the object at id without constraining // its concrete object kind. -func (r *Resolver) ExactObject(id objectid.ObjectID) (*stored.Stored[object.Object], error) { +func (r *Fetcher) ExactObject(id objectid.ObjectID) (*stored.Stored[object.Object], error) { parsed, err := r.parseObject(id) if err != nil { return nil, err diff --git a/object/resolve/exact_reader.go b/object/fetch/exact_reader.go index cf181038..54cf246c 100644 --- a/object/resolve/exact_reader.go +++ b/object/fetch/exact_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -10,7 +10,7 @@ import ( // exactReader reads one object's content stream and verifies that its header // type matches wantType. -func (r *Resolver) exactReader(id objectid.ObjectID, wantType objecttype.Type, wantName string) (io.ReadCloser, int64, error) { +func (r *Fetcher) exactReader(id objectid.ObjectID, wantType objecttype.Type, wantName string) (io.ReadCloser, int64, error) { gotType, size, rc, err := r.store.ReadReaderContent(id) if err != nil { return nil, 0, err @@ -19,7 +19,7 @@ func (r *Resolver) exactReader(id objectid.ObjectID, wantType objecttype.Type, w if gotType != wantType { _ = rc.Close() - return nil, 0, fmt.Errorf("object/resolve: expected %s object %s, got %v", wantName, id, gotType) + return nil, 0, fmt.Errorf("object/fetch: expected %s object %s, got %v", wantName, id, gotType) } return rc, size, nil diff --git a/object/resolve/exact_tag.go b/object/fetch/exact_tag.go index 8c5d22c9..03c66019 100644 --- a/object/resolve/exact_tag.go +++ b/object/fetch/exact_tag.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -9,7 +9,7 @@ import ( ) // ExactTag reads, parses, and wraps the tag at id. -func (r *Resolver) ExactTag(id objectid.ObjectID) (*stored.Stored[*tag.Tag], error) { +func (r *Fetcher) ExactTag(id objectid.ObjectID) (*stored.Stored[*tag.Tag], error) { parsed, err := r.parseObject(id) if err != nil { return nil, err @@ -17,7 +17,7 @@ func (r *Resolver) ExactTag(id objectid.ObjectID) (*stored.Stored[*tag.Tag], err tag, ok := parsed.(*tag.Tag) if !ok { - return nil, fmt.Errorf("object/resolve: expected tag object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected tag object %s, got %v", id, parsed.ObjectType()) } return stored.New(id, tag), nil diff --git a/object/resolve/exact_tag_reader.go b/object/fetch/exact_tag_reader.go index e69441d5..79a31a4c 100644 --- a/object/resolve/exact_tag_reader.go +++ b/object/fetch/exact_tag_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -11,6 +11,6 @@ import ( // together with its content size in bytes. // // Usage of this method is unusual. -func (r *Resolver) ExactTagReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) ExactTagReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { return r.exactReader(id, objecttype.TypeTag, "tag") } diff --git a/object/resolve/exact_tree.go b/object/fetch/exact_tree.go index de58ddb1..cab10ba2 100644 --- a/object/resolve/exact_tree.go +++ b/object/fetch/exact_tree.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -9,7 +9,7 @@ import ( ) // ExactTree reads, parses, and wraps the tree at id. -func (r *Resolver) ExactTree(id objectid.ObjectID) (*stored.Stored[*tree.Tree], error) { +func (r *Fetcher) ExactTree(id objectid.ObjectID) (*stored.Stored[*tree.Tree], error) { parsed, err := r.parseObject(id) if err != nil { return nil, err @@ -17,7 +17,7 @@ func (r *Resolver) ExactTree(id objectid.ObjectID) (*stored.Stored[*tree.Tree], tree, ok := parsed.(*tree.Tree) if !ok { - return nil, fmt.Errorf("object/resolve: expected tree object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected tree object %s, got %v", id, parsed.ObjectType()) } return stored.New(id, tree), nil diff --git a/object/resolve/exact_tree_reader.go b/object/fetch/exact_tree_reader.go index 8d9ec821..4660bd34 100644 --- a/object/resolve/exact_tree_reader.go +++ b/object/fetch/exact_tree_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -11,6 +11,6 @@ import ( // together with its content size in bytes. // // Usage of this method is unusual. -func (r *Resolver) ExactTreeReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) ExactTreeReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { return r.exactReader(id, objecttype.TypeTree, "tree") } diff --git a/object/fetch/fetcher.go b/object/fetch/fetcher.go new file mode 100644 index 00000000..ed4e74a1 --- /dev/null +++ b/object/fetch/fetcher.go @@ -0,0 +1,17 @@ +package fetch + +import objectstorer "codeberg.org/lindenii/furgit/object/storer" + +// Fetcher resolves parsed and streamed objects from an object store. +// +// A Fetcher does not take ownership of the store and does not close it. +type Fetcher struct { + store objectstorer.Store +} + +// New returns a Fetcher that reads objects from store. +// +// The returned Fetcher does not take ownership of store. +func New(store objectstorer.Store) *Fetcher { + return &Fetcher{store: store} +} diff --git a/object/resolve/object_parse.go b/object/fetch/object_parse.go index 8e8d8bde..a29e17c0 100644 --- a/object/resolve/object_parse.go +++ b/object/fetch/object_parse.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -8,7 +8,7 @@ import ( objecttype "codeberg.org/lindenii/furgit/object/type" ) -func (r *Resolver) parseObject(id objectid.ObjectID) (object.Object, error) { +func (r *Fetcher) parseObject(id objectid.ObjectID) (object.Object, error) { ty, content, err := r.store.ReadBytesContent(id) if err != nil { return nil, err @@ -21,7 +21,7 @@ func (r *Resolver) parseObject(id objectid.ObjectID) (object.Object, error) { tyName = fmt.Sprintf("type %d", ty) } - return nil, fmt.Errorf("object/resolve: parse object %s (%s): %w", id, tyName, err) + return nil, fmt.Errorf("object/fetch: parse object %s (%s): %w", id, tyName, err) } return parsed, nil diff --git a/object/resolve/path.go b/object/fetch/path.go index d11f3b48..f26379c3 100644 --- a/object/resolve/path.go +++ b/object/fetch/path.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -11,7 +11,7 @@ import ( type PathEmptyError struct{} func (err *PathEmptyError) Error() string { - return "object/resolve: empty tree path" + return "object/fetch: empty tree path" } // PathSegmentEmptyError indicates that one path segment is empty. @@ -20,7 +20,7 @@ type PathSegmentEmptyError struct { } func (err *PathSegmentEmptyError) Error() string { - return fmt.Sprintf("object/resolve: empty tree path segment at index %d", err.Index) + return fmt.Sprintf("object/fetch: empty tree path segment at index %d", err.Index) } // PathNotFoundError indicates that one tree path segment was not found. @@ -30,7 +30,7 @@ type PathNotFoundError struct { } func (err *PathNotFoundError) Error() string { - return fmt.Sprintf("object/resolve: tree entry %q not found at index %d", err.Name, err.Index) + return fmt.Sprintf("object/fetch: tree entry %q not found at index %d", err.Name, err.Index) } // PathNotTreeError indicates that one intermediate path segment was not a tree. @@ -40,7 +40,7 @@ type PathNotTreeError struct { } func (err *PathNotTreeError) Error() string { - return fmt.Sprintf("object/resolve: path segment %q at index %d is not a tree", err.Name, err.Index) + return fmt.Sprintf("object/fetch: path segment %q at index %d is not a tree", err.Name, err.Index) } // Path resolves parts within the tree identified by root and returns the final @@ -59,7 +59,7 @@ func (err *PathNotTreeError) Error() string { // // If your entry names are valid UTF-8 and uses / solely as segment separators, // it may be convenient to use TreeFS for an io/fs.FS-like interface. -func (r *Resolver) Path(root objectid.ObjectID, parts [][]byte) (tree.TreeEntry, error) { +func (r *Fetcher) Path(root objectid.ObjectID, parts [][]byte) (tree.TreeEntry, error) { if len(parts) == 0 { return tree.TreeEntry{}, &PathEmptyError{} } diff --git a/object/resolve/peel_to_blob.go b/object/fetch/peel_to_blob.go index c8aec1ad..b0a1ad1c 100644 --- a/object/resolve/peel_to_blob.go +++ b/object/fetch/peel_to_blob.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -10,7 +10,7 @@ import ( ) // PeelToBlob peels tags until it reaches a blob. -func (r *Resolver) PeelToBlob(id objectid.ObjectID) (*stored.Stored[*blob.Blob], error) { +func (r *Fetcher) PeelToBlob(id objectid.ObjectID) (*stored.Stored[*blob.Blob], error) { for { obj, err := r.ExactObject(id) if err != nil { @@ -23,7 +23,7 @@ func (r *Resolver) PeelToBlob(id objectid.ObjectID) (*stored.Stored[*blob.Blob], case *tag.Tag: id = parsed.Target default: - return nil, fmt.Errorf("object/resolve: expected blob-ish object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected blob-ish object %s, got %v", id, parsed.ObjectType()) } } } diff --git a/object/resolve/peel_to_blob_id.go b/object/fetch/peel_to_blob_id.go index c3467cf2..9d13f640 100644 --- a/object/resolve/peel_to_blob_id.go +++ b/object/fetch/peel_to_blob_id.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -8,7 +8,7 @@ import ( ) // PeelToBlobID peels tags until it reaches a blob object ID. -func (r *Resolver) PeelToBlobID(id objectid.ObjectID) (objectid.ObjectID, error) { +func (r *Fetcher) PeelToBlobID(id objectid.ObjectID) (objectid.ObjectID, error) { for { ty, _, err := r.store.ReadHeader(id) if err != nil { @@ -31,9 +31,9 @@ func (r *Resolver) PeelToBlobID(id objectid.ObjectID) (objectid.ObjectID, error) objecttype.TypeFuture, objecttype.TypeOfsDelta, objecttype.TypeRefDelta: - return objectid.ObjectID{}, fmt.Errorf("object/resolve: expected blob-ish object %s, got %v", id, ty) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: expected blob-ish object %s, got %v", id, ty) default: - return objectid.ObjectID{}, fmt.Errorf("object/resolve: expected blob-ish object %s, got %v", id, ty) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: expected blob-ish object %s, got %v", id, ty) } } } diff --git a/object/resolve/peel_to_blob_reader.go b/object/fetch/peel_to_blob_reader.go index d3bc7f49..d7072531 100644 --- a/object/resolve/peel_to_blob_reader.go +++ b/object/fetch/peel_to_blob_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -8,7 +8,7 @@ import ( // PeelToBlobReader returns a reader for the content of the peeled blob at id, // together with its content size in bytes. -func (r *Resolver) PeelToBlobReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) PeelToBlobReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { blobID, err := r.PeelToBlobID(id) if err != nil { return nil, 0, err diff --git a/object/resolve/peel_to_commit.go b/object/fetch/peel_to_commit.go index 0272dd83..5ec66411 100644 --- a/object/resolve/peel_to_commit.go +++ b/object/fetch/peel_to_commit.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -10,7 +10,7 @@ import ( ) // PeelToCommit peels tags until it reaches a commit. -func (r *Resolver) PeelToCommit(id objectid.ObjectID) (*stored.Stored[*commit.Commit], error) { +func (r *Fetcher) PeelToCommit(id objectid.ObjectID) (*stored.Stored[*commit.Commit], error) { for { obj, err := r.ExactObject(id) if err != nil { @@ -23,7 +23,7 @@ func (r *Resolver) PeelToCommit(id objectid.ObjectID) (*stored.Stored[*commit.Co case *tag.Tag: id = parsed.Target default: - return nil, fmt.Errorf("object/resolve: expected commit-ish object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected commit-ish object %s, got %v", id, parsed.ObjectType()) } } } diff --git a/object/resolve/peel_to_commit_id.go b/object/fetch/peel_to_commit_id.go index 972823ce..b6b257cf 100644 --- a/object/resolve/peel_to_commit_id.go +++ b/object/fetch/peel_to_commit_id.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -8,7 +8,7 @@ import ( ) // PeelToCommitID peels tags until it reaches a commit object ID. -func (r *Resolver) PeelToCommitID(id objectid.ObjectID) (objectid.ObjectID, error) { +func (r *Fetcher) PeelToCommitID(id objectid.ObjectID) (objectid.ObjectID, error) { for { ty, _, err := r.store.ReadHeader(id) if err != nil { @@ -31,9 +31,9 @@ func (r *Resolver) PeelToCommitID(id objectid.ObjectID) (objectid.ObjectID, erro objecttype.TypeFuture, objecttype.TypeOfsDelta, objecttype.TypeRefDelta: - return objectid.ObjectID{}, fmt.Errorf("object/resolve: expected commit-ish object %s, got %v", id, ty) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: expected commit-ish object %s, got %v", id, ty) default: - return objectid.ObjectID{}, fmt.Errorf("object/resolve: expected commit-ish object %s, got %v", id, ty) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: expected commit-ish object %s, got %v", id, ty) } } } diff --git a/object/resolve/peel_to_commit_reader.go b/object/fetch/peel_to_commit_reader.go index 6972eff3..02bf9f6f 100644 --- a/object/resolve/peel_to_commit_reader.go +++ b/object/fetch/peel_to_commit_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -10,7 +10,7 @@ import ( // id, together with its content size in bytes. // // Usage of this method is unusual. -func (r *Resolver) PeelToCommitReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) PeelToCommitReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { commitID, err := r.PeelToCommitID(id) if err != nil { return nil, 0, err diff --git a/object/resolve/peel_to_tag.go b/object/fetch/peel_to_tag.go index e131f4c1..60693069 100644 --- a/object/resolve/peel_to_tag.go +++ b/object/fetch/peel_to_tag.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( objectid "codeberg.org/lindenii/furgit/object/id" @@ -7,6 +7,6 @@ import ( ) // PeelToTag returns the tag at id without further peeling. -func (r *Resolver) PeelToTag(id objectid.ObjectID) (*stored.Stored[*tag.Tag], error) { +func (r *Fetcher) PeelToTag(id objectid.ObjectID) (*stored.Stored[*tag.Tag], error) { return r.ExactTag(id) } diff --git a/object/resolve/peel_to_tag_id.go b/object/fetch/peel_to_tag_id.go index 275ef561..dc02c60a 100644 --- a/object/resolve/peel_to_tag_id.go +++ b/object/fetch/peel_to_tag_id.go @@ -1,8 +1,8 @@ -package resolve +package fetch import objectid "codeberg.org/lindenii/furgit/object/id" // PeelToTagID returns id unchanged. -func (r *Resolver) PeelToTagID(id objectid.ObjectID) (objectid.ObjectID, error) { +func (r *Fetcher) PeelToTagID(id objectid.ObjectID) (objectid.ObjectID, error) { return id, nil } diff --git a/object/resolve/peel_to_tag_reader.go b/object/fetch/peel_to_tag_reader.go index 77279511..562ef9e8 100644 --- a/object/resolve/peel_to_tag_reader.go +++ b/object/fetch/peel_to_tag_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -10,7 +10,7 @@ import ( // together with its content size in bytes. // // Usage of this method is unusual. -func (r *Resolver) PeelToTagReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) PeelToTagReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { tagID, err := r.PeelToTagID(id) if err != nil { return nil, 0, err diff --git a/object/resolve/peel_to_tree.go b/object/fetch/peel_to_tree.go index 2f2da4d7..119e76ac 100644 --- a/object/resolve/peel_to_tree.go +++ b/object/fetch/peel_to_tree.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -12,7 +12,7 @@ import ( // PeelToTree peels tags until it reaches a tree or commit. If it reaches a // commit, it returns the commit's root tree. -func (r *Resolver) PeelToTree(id objectid.ObjectID) (*stored.Stored[*tree.Tree], error) { +func (r *Fetcher) PeelToTree(id objectid.ObjectID) (*stored.Stored[*tree.Tree], error) { for { obj, err := r.ExactObject(id) if err != nil { @@ -27,7 +27,7 @@ func (r *Resolver) PeelToTree(id objectid.ObjectID) (*stored.Stored[*tree.Tree], case *tag.Tag: id = parsed.Target default: - return nil, fmt.Errorf("object/resolve: expected tree-ish object %s, got %v", id, parsed.ObjectType()) + return nil, fmt.Errorf("object/fetch: expected tree-ish object %s, got %v", id, parsed.ObjectType()) } } } diff --git a/object/resolve/peel_to_tree_id.go b/object/fetch/peel_to_tree_id.go index bacee65e..21dcfde4 100644 --- a/object/resolve/peel_to_tree_id.go +++ b/object/fetch/peel_to_tree_id.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -9,7 +9,7 @@ import ( // PeelToTreeID peels tags until it reaches a tree object ID, or a commit whose // root tree object ID is then returned. -func (r *Resolver) PeelToTreeID(id objectid.ObjectID) (objectid.ObjectID, error) { +func (r *Fetcher) PeelToTreeID(id objectid.ObjectID) (objectid.ObjectID, error) { for { ty, _, err := r.store.ReadHeader(id) if err != nil { @@ -38,9 +38,9 @@ func (r *Resolver) PeelToTreeID(id objectid.ObjectID) (objectid.ObjectID, error) objecttype.TypeFuture, objecttype.TypeOfsDelta, objecttype.TypeRefDelta: - return objectid.ObjectID{}, fmt.Errorf("object/resolve: expected tree-ish object %s, got %v", id, ty) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: expected tree-ish object %s, got %v", id, ty) default: - return objectid.ObjectID{}, fmt.Errorf("object/resolve: expected tree-ish object %s, got %v", id, ty) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: expected tree-ish object %s, got %v", id, ty) } } } diff --git a/object/resolve/peel_to_tree_reader.go b/object/fetch/peel_to_tree_reader.go index 515224ed..fe1c5b93 100644 --- a/object/resolve/peel_to_tree_reader.go +++ b/object/fetch/peel_to_tree_reader.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io" @@ -10,7 +10,7 @@ import ( // together with its content size in bytes. // // Usage of this method is unusual. -func (r *Resolver) PeelToTreeReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { +func (r *Fetcher) PeelToTreeReader(id objectid.ObjectID) (io.ReadCloser, int64, error) { treeID, err := r.PeelToTreeID(id) if err != nil { return nil, 0, err diff --git a/object/resolve/treefs.go b/object/fetch/treefs.go index a080d56d..06b6ad25 100644 --- a/object/resolve/treefs.go +++ b/object/fetch/treefs.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io/fs" @@ -14,9 +14,9 @@ import ( // valid fs.FS paths. Tree entries that cannot be represented under those rules // are not addressable through this API. // -// TreeFS does not take ownership of its Resolver. +// TreeFS does not take ownership of its Fetcher. type TreeFS struct { - resolver *Resolver + resolver *Fetcher rootTree objectid.ObjectID rootEntry *tree.TreeEntry } diff --git a/object/resolve/treefs_entry.go b/object/fetch/treefs_entry.go index 6d23e282..4aa7730a 100644 --- a/object/resolve/treefs_entry.go +++ b/object/fetch/treefs_entry.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "errors" @@ -68,7 +68,7 @@ func (entry treeEntryValue) isDir() bool { return entry.mode == tree.FileModeDir } -func (entry treeEntryValue) blobSize(resolve *Resolver) (int64, error) { +func (entry treeEntryValue) blobSize(resolve *Fetcher) (int64, error) { _, size, err := resolve.store.ReadHeader(entry.objectID) if err != nil { return 0, err @@ -83,7 +83,7 @@ func (entry treeEntryValue) subtreeID() (objectid.ObjectID, error) { } if entry.mode != tree.FileModeDir { - return objectid.ObjectID{}, fmt.Errorf("object/resolve: path %q is not a tree", entry.name) + return objectid.ObjectID{}, fmt.Errorf("object/fetch: path %q is not a tree", entry.name) } return entry.objectID, nil diff --git a/object/resolve/treefs_info.go b/object/fetch/treefs_info.go index f8eb1e9e..eecf183d 100644 --- a/object/resolve/treefs_info.go +++ b/object/fetch/treefs_info.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io/fs" diff --git a/object/resolve/treefs_new.go b/object/fetch/treefs_new.go index 9f5fe77d..d2224fcf 100644 --- a/object/resolve/treefs_new.go +++ b/object/fetch/treefs_new.go @@ -1,10 +1,10 @@ -package resolve +package fetch import objectid "codeberg.org/lindenii/furgit/object/id" // TreeFS returns a new filesystem view rooted at root, which may be any // tree-ish object accepted by PeelToTreeID. -func (r *Resolver) TreeFS(root objectid.ObjectID) (*TreeFS, error) { +func (r *Fetcher) TreeFS(root objectid.ObjectID) (*TreeFS, error) { rootTree, err := r.PeelToTreeID(root) if err != nil { return nil, err diff --git a/object/resolve/treefs_op.go b/object/fetch/treefs_op.go index ed93ec85..f0472923 100644 --- a/object/resolve/treefs_op.go +++ b/object/fetch/treefs_op.go @@ -1,4 +1,4 @@ -package resolve +package fetch type treeFSOp uint8 diff --git a/object/resolve/treefs_open.go b/object/fetch/treefs_open.go index 8e2b3588..59c6ec5d 100644 --- a/object/resolve/treefs_open.go +++ b/object/fetch/treefs_open.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -58,7 +58,7 @@ func (treeFS *TreeFS) Open(name string) (fs.File, error) { } if entry.mode == tree.FileModeGitlink { - return nil, treeFSPathError(treeFSOpOpen, name, fmt.Errorf("object/resolve: gitlink entries are not readable as files")) + return nil, treeFSPathError(treeFSOpOpen, name, fmt.Errorf("object/fetch: gitlink entries are not readable as files")) } reader, _, err := treeFS.resolver.ExactBlobReader(entry.objectID) diff --git a/object/resolve/treefs_path.go b/object/fetch/treefs_path.go index c35791cb..7aa31c7f 100644 --- a/object/resolve/treefs_path.go +++ b/object/fetch/treefs_path.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "io/fs" diff --git a/object/resolve/treefs_readdir.go b/object/fetch/treefs_readdir.go index 5516de33..7518c607 100644 --- a/object/resolve/treefs_readdir.go +++ b/object/fetch/treefs_readdir.go @@ -1,4 +1,4 @@ -package resolve +package fetch import "io/fs" diff --git a/object/resolve/treefs_readfile.go b/object/fetch/treefs_readfile.go index e1d514a3..d3671f07 100644 --- a/object/resolve/treefs_readfile.go +++ b/object/fetch/treefs_readfile.go @@ -1,4 +1,4 @@ -package resolve +package fetch import ( "fmt" @@ -21,7 +21,7 @@ func (treeFS *TreeFS) ReadFile(name string) ([]byte, error) { } if entry.mode == tree.FileModeGitlink { - return nil, treeFSPathError(treeFSOpReadFile, name, fmt.Errorf("object/resolve: gitlink entries are not readable as files")) + return nil, treeFSPathError(treeFSOpReadFile, name, fmt.Errorf("object/fetch: gitlink entries are not readable as files")) } reader, _, err := treeFS.resolver.ExactBlobReader(entry.objectID) diff --git a/object/resolve/treefs_stat.go b/object/fetch/treefs_stat.go index 396dfbae..7d7a6418 100644 --- a/object/resolve/treefs_stat.go +++ b/object/fetch/treefs_stat.go @@ -1,4 +1,4 @@ -package resolve +package fetch import "io/fs" diff --git a/object/resolve/treefs_sub.go b/object/fetch/treefs_sub.go index f0eefdc5..faf47092 100644 --- a/object/resolve/treefs_sub.go +++ b/object/fetch/treefs_sub.go @@ -1,4 +1,4 @@ -package resolve +package fetch import "io/fs" diff --git a/object/resolve/treefs_test.go b/object/fetch/treefs_test.go index 59eebd5e..067283f7 100644 --- a/object/resolve/treefs_test.go +++ b/object/fetch/treefs_test.go @@ -1,4 +1,4 @@ -package resolve_test +package fetch_test import ( "errors" @@ -7,7 +7,7 @@ import ( "codeberg.org/lindenii/furgit/internal/testgit" objectid "codeberg.org/lindenii/furgit/object/id" - "codeberg.org/lindenii/furgit/object/resolve" + "codeberg.org/lindenii/furgit/object/fetch" "codeberg.org/lindenii/furgit/object/tree" "codeberg.org/lindenii/furgit/repository" ) @@ -41,7 +41,7 @@ func TestTreeFS(t *testing.T) { defer func() { _ = repo.Close() }() - resolver := resolve.New(repo.Objects()) + resolver := fetch.New(repo.Objects()) treeFS, err := resolver.TreeFS(commitID) if err != nil { diff --git a/object/resolve/resolver.go b/object/resolve/resolver.go deleted file mode 100644 index f5e4e8c3..00000000 --- a/object/resolve/resolver.go +++ /dev/null @@ -1,17 +0,0 @@ -package resolve - -import objectstorer "codeberg.org/lindenii/furgit/object/storer" - -// Resolver resolves parsed and streamed objects from an object store. -// -// A Resolver does not take ownership of the store and does not close it. -type Resolver struct { - store objectstorer.Store -} - -// New returns a Resolver that reads objects from store. -// -// The returned Resolver does not take ownership of store. -func New(store objectstorer.Store) *Resolver { - return &Resolver{store: store} -} diff --git a/repository/resolver.go b/repository/resolver.go index ed87fa09..920045c5 100644 --- a/repository/resolver.go +++ b/repository/resolver.go @@ -1,11 +1,11 @@ package repository -import "codeberg.org/lindenii/furgit/object/resolve" +import "codeberg.org/lindenii/furgit/object/fetch" // Resolver returns an object resolver backed by the repository's object store. // // The returned resolver is ready for use, borrows the repository's object // store, does not need closing, and must not be used after Close. -func (repo *Repository) Resolver() *resolve.Resolver { - return resolve.New(repo.objects) +func (repo *Repository) Resolver() *fetch.Fetcher { + return fetch.New(repo.objects) } |
