diff options
| author | 2026-03-31 03:17:56 +0000 | |
|---|---|---|
| committer | 2026-03-31 03:17:56 +0000 | |
| commit | 3ce59c3248dec0eb0f918c42f37f53bc2ac20425 (patch) | |
| tree | 183eaec2d26b037324f41ff7f79dda67396b400e | |
| parent | object/fetch: Wrap ReadSize errors (diff) | |
| signature | No signature | |
commitquery: Error handling cleanup after the fetcher port
Still a few weird parts, but I forgot what those helpers were for,
and the semantics were a bit awkward... will check laterâ„¢
| -rw-r--r-- | commitquery/query_load_by_oid.go | 29 | ||||
| -rw-r--r-- | commitquery/query_resolve_commitish.go | 38 |
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) } |
