diff options
| author | 2026-03-11 20:41:32 +0800 | |
|---|---|---|
| committer | 2026-03-11 20:41:32 +0800 | |
| commit | 040b572d95e4ca27e1ada6113c405b8a1eb4a669 (patch) | |
| tree | 68d826f4d91144105802c9d1c67175ba9b314e29 /internal/commitquery/oid.go | |
| parent | research: Maybe drop mmap in packfile_bloom (diff) | |
| signature | No signature | |
commitquery: Merge from ancestor and mergebases
Diffstat (limited to 'internal/commitquery/oid.go')
| -rw-r--r-- | internal/commitquery/oid.go | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/internal/commitquery/oid.go b/internal/commitquery/oid.go deleted file mode 100644 index 927c0220..00000000 --- a/internal/commitquery/oid.go +++ /dev/null @@ -1,94 +0,0 @@ -package commitquery - -import ( - stderrors "errors" - - commitgraphread "codeberg.org/lindenii/furgit/commitgraph/read" - giterrors "codeberg.org/lindenii/furgit/errors" - "codeberg.org/lindenii/furgit/object" - "codeberg.org/lindenii/furgit/objectid" - "codeberg.org/lindenii/furgit/objectstore" - "codeberg.org/lindenii/furgit/objecttype" -) - -// ID returns the canonical object ID of one internal node. -func (ctx *Context) ID(idx NodeIndex) objectid.ObjectID { - return ctx.nodes[idx].id -} - -// CommitTime returns the committer timestamp used for one internal node. -func (ctx *Context) CommitTime(idx NodeIndex) int64 { - return ctx.nodes[idx].commitTime -} - -// ResolveOID resolves one commit object ID to one internal query node. -func (ctx *Context) ResolveOID(id objectid.ObjectID) (NodeIndex, error) { - idx, ok := ctx.byOID[id] - if ok { - err := ctx.ensureLoaded(idx) - if err != nil { - return 0, err - } - - return idx, nil - } - - idx = ctx.newNode(id) - ctx.byOID[id] = idx - - err := ctx.loadByOID(idx) - if err != nil { - delete(ctx.byOID, id) - - return 0, err - } - - return idx, nil -} - -// loadByOID populates one node from an object ID. -func (ctx *Context) loadByOID(idx NodeIndex) error { - id := ctx.nodes[idx].id - - if ctx.graph != nil { - pos, err := ctx.graph.Lookup(id) - if err != nil { - if _, ok := stderrors.AsType[*commitgraphread.NotFoundError](err); !ok { - return err - } - } else { - return ctx.loadCommitAtGraphPos(idx, pos) - } - } - - ty, content, err := ctx.store.ReadBytesContent(id) - if err != nil { - if stderrors.Is(err, objectstore.ErrObjectNotFound) { - return &giterrors.ObjectMissingError{OID: id} - } - - return err - } - - if ty != objecttype.TypeCommit { - return &giterrors.ObjectTypeError{OID: id, Got: ty, Want: objecttype.TypeCommit} - } - - commitObj, err := object.ParseCommit(content, id.Algorithm()) - if err != nil { - return err - } - - parents := make([]Parent, 0, len(commitObj.Parents)) - for _, parentID := range commitObj.Parents { - parents = append(parents, Parent{ID: parentID}) - } - - commit := Commit{ - ID: id, - Parents: parents, - CommitTime: commitObj.Committer.WhenUnix, - } - - return ctx.populateNode(idx, commit) -} |
