Fast implementation of Git in pure Go
codeberg.org/lindenii/furgit
git
go
1package commitquery
2
3import objectid "codeberg.org/lindenii/furgit/object/id"
4
5// resolveOID resolves one commit object ID to one internal query node.
6func (query *query) resolveOID(id objectid.ObjectID) (nodeIndex, error) {
7 idx, ok := query.byOID[id]
8 if ok {
9 err := query.ensureLoaded(idx)
10 if err != nil {
11 return 0, err
12 }
13
14 return idx, nil
15 }
16
17 idx = query.newNode(id)
18 query.byOID[id] = idx
19
20 err := query.loadByOID(idx)
21 if err != nil {
22 delete(query.byOID, id)
23
24 return 0, err
25 }
26
27 return idx, nil
28}