aboutsummaryrefslogtreecommitdiff
path: root/commitquery/query_resolve_commitish.go
diff options
context:
space:
mode:
Diffstat (limited to 'commitquery/query_resolve_commitish.go')
-rw-r--r--commitquery/query_resolve_commitish.go38
1 files changed, 6 insertions, 32 deletions
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)
}