aboutsummaryrefslogtreecommitdiff
path: root/commitquery
diff options
context:
space:
mode:
Diffstat (limited to 'commitquery')
-rw-r--r--commitquery/query_load_by_oid.go29
-rw-r--r--commitquery/query_resolve_commitish.go38
2 files changed, 12 insertions, 55 deletions
diff --git a/commitquery/query_load_by_oid.go b/commitquery/query_load_by_oid.go
index b9860a05..f9c956ee 100644
--- a/commitquery/query_load_by_oid.go
+++ b/commitquery/query_load_by_oid.go
@@ -3,11 +3,7 @@ package commitquery
import (
stderrors "errors"
- giterrors "codeberg.org/lindenii/furgit/errors"
commitgraphread "codeberg.org/lindenii/furgit/format/commitgraph/read"
- "codeberg.org/lindenii/furgit/object/commit"
- objectstore "codeberg.org/lindenii/furgit/object/store"
- objecttype "codeberg.org/lindenii/furgit/object/type"
)
// loadByOID populates one node from an object ID.
@@ -25,34 +21,21 @@ func (query *query) loadByOID(idx nodeIndex) error {
}
}
- obj, err := query.fetcher.ExactObject(id)
+ commit, err := query.fetcher.ExactCommit(id)
if err != nil {
- if stderrors.Is(err, objectstore.ErrObjectNotFound) {
- return &giterrors.ObjectMissingError{OID: id}
- }
-
return err
}
- commitObj, ok := obj.Object().(*commit.Commit)
- if !ok {
- return &giterrors.ObjectTypeError{
- OID: id,
- Got: obj.Object().ObjectType(),
- Want: objecttype.TypeCommit,
- }
- }
-
- parents := make([]parentRef, 0, len(commitObj.Parents))
- for _, parentID := range commitObj.Parents {
+ parents := make([]parentRef, 0, len(commit.Object().Parents))
+ for _, parentID := range commit.Object().Parents {
parents = append(parents, parentRef{ID: parentID})
}
- commit := commitData{
+ commitData := commitData{
ID: id,
Parents: parents,
- CommitTime: commitObj.Committer.WhenUnix,
+ CommitTime: commit.Object().Committer.WhenUnix,
}
- return query.populateNode(idx, commit)
+ return query.populateNode(idx, commitData)
}
diff --git a/commitquery/query_resolve_commitish.go b/commitquery/query_resolve_commitish.go
index a9ad8bb5..1e14a1c0 100644
--- a/commitquery/query_resolve_commitish.go
+++ b/commitquery/query_resolve_commitish.go
@@ -1,39 +1,13 @@
package commitquery
-import (
- stderrors "errors"
-
- giterrors "codeberg.org/lindenii/furgit/errors"
- "codeberg.org/lindenii/furgit/object/commit"
- objectid "codeberg.org/lindenii/furgit/object/id"
- objectstore "codeberg.org/lindenii/furgit/object/store"
- "codeberg.org/lindenii/furgit/object/tag"
- objecttype "codeberg.org/lindenii/furgit/object/type"
-)
+import objectid "codeberg.org/lindenii/furgit/object/id"
// resolveCommitish peels one commit-ish object ID and resolves the commit.
func (query *query) resolveCommitish(id objectid.ObjectID) (nodeIndex, error) {
- for {
- obj, err := query.fetcher.ExactObject(id)
- if err != nil {
- if stderrors.Is(err, objectstore.ErrObjectNotFound) {
- return 0, &giterrors.ObjectMissingError{OID: id}
- }
-
- return 0, err
- }
-
- switch parsed := obj.Object().(type) {
- case *commit.Commit:
- return query.resolveOID(id)
- case *tag.Tag:
- id = parsed.Target
- default:
- return 0, &giterrors.ObjectTypeError{
- OID: id,
- Got: parsed.ObjectType(),
- Want: objecttype.TypeCommit,
- }
- }
+ id, err := query.fetcher.PeelToCommitID(id)
+ if err != nil {
+ return 0, err
}
+
+ return query.resolveOID(id)
}