aboutsummaryrefslogtreecommitdiff
path: root/commitquery/resolve.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-29 13:38:19 +0000
committerGravatar Runxi Yu2026-03-29 13:39:49 +0000
commit37707aada0157f255dbad920b917efb601184e12 (patch)
tree29f79d242c764de8d6f1e65bcc847e53f21cd646 /commitquery/resolve.go
parentcommitquery: Context has been gone long ago (diff)
signatureNo signature
commitquery: Reorganize
Diffstat (limited to 'commitquery/resolve.go')
-rw-r--r--commitquery/resolve.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/commitquery/resolve.go b/commitquery/resolve.go
new file mode 100644
index 00000000..cd6c3650
--- /dev/null
+++ b/commitquery/resolve.go
@@ -0,0 +1,39 @@
+package commitquery
+
+import (
+ "codeberg.org/lindenii/furgit/internal/peel"
+ objectid "codeberg.org/lindenii/furgit/object/id"
+)
+
+func (query *query) resolveOID(id objectid.ObjectID) (nodeIndex, error) {
+ idx, ok := query.byOID[id]
+ if ok {
+ err := query.ensureLoaded(idx)
+ if err != nil {
+ return 0, err
+ }
+
+ return idx, nil
+ }
+
+ idx = query.newNode(id)
+ query.byOID[id] = idx
+
+ err := query.loadByOID(idx)
+ if err != nil {
+ delete(query.byOID, id)
+
+ return 0, err
+ }
+
+ return idx, nil
+}
+
+func (query *query) resolveCommitish(id objectid.ObjectID) (nodeIndex, error) {
+ commitID, err := peel.ToCommit(query.store, id)
+ if err != nil {
+ return 0, err
+ }
+
+ return query.resolveOID(commitID)
+}