commitquery

package
v0.1.71 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2026 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package commitquery provides private commit-domain query routines.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsAncestor

func IsAncestor(ctx *Context, ancestor, descendant NodeIndex) (bool, error)

IsAncestor reports whether ancestor is reachable from descendant through commit parent edges.

Types

type Commit

type Commit struct {
	ID            objectid.ObjectID
	Parents       []Parent
	CommitTime    int64
	Generation    uint64
	HasGeneration bool
	GraphPos      commitgraphread.Position
	HasGraphPos   bool
}

Commit stores the metadata needed by commit-domain queries.

type Context

type Context struct {
	// contains filtered or unexported fields
}

Context owns the mutable node arena for one commit query.

func NewContext

func NewContext(store objectstore.Store, graph *commitgraphread.Reader) *Context

NewContext builds one empty query context over one object store and optional commit-graph reader.

func (*Context) BeginMarkPhase

func (ctx *Context) BeginMarkPhase()

BeginMarkPhase starts one tracked mark-mutation phase.

func (*Context) ClearMarks

func (ctx *Context) ClearMarks(idx NodeIndex, bits markBits)

ClearMarks removes one set of mark bits from one internal node.

func (*Context) ClearTouchedMarks

func (ctx *Context) ClearTouchedMarks(bits markBits)

ClearTouchedMarks clears the provided bits from all nodes touched in the current mark phase.

func (*Context) CommitTime

func (ctx *Context) CommitTime(idx NodeIndex) int64

CommitTime returns the committer timestamp used for one internal node.

func (*Context) Compare

func (ctx *Context) Compare(left, right NodeIndex) int

Compare compares two internal nodes using merge-base queue ordering.

func (*Context) EffectiveGeneration

func (ctx *Context) EffectiveGeneration(idx NodeIndex) uint64

EffectiveGeneration returns one node's generation value.

func (*Context) HasAllMarks

func (ctx *Context) HasAllMarks(idx NodeIndex, bits markBits) bool

HasAllMarks reports whether one internal node already has all requested bits.

func (*Context) HasAnyMarks

func (ctx *Context) HasAnyMarks(idx NodeIndex, bits markBits) bool

HasAnyMarks reports whether one internal node has any requested bit.

func (*Context) ID

func (ctx *Context) ID(idx NodeIndex) objectid.ObjectID

ID returns the canonical object ID of one internal node.

func (*Context) Marks

func (ctx *Context) Marks(idx NodeIndex) markBits

Marks returns the mark bits of one internal node.

func (*Context) Parents

func (ctx *Context) Parents(idx NodeIndex) []NodeIndex

Parents returns resolved parent node indices for one internal node.

func (*Context) ResolveGraphPos

func (ctx *Context) ResolveGraphPos(pos commitgraphread.Position) (NodeIndex, error)

ResolveGraphPos resolves one commit-graph position to one internal query node.

func (*Context) ResolveOID

func (ctx *Context) ResolveOID(id objectid.ObjectID) (NodeIndex, error)

ResolveOID resolves one commit object ID to one internal query node.

func (*Context) SetMarks

func (ctx *Context) SetMarks(idx NodeIndex, bits markBits)

SetMarks ORs one set of mark bits into one internal node.

type NodeIndex

type NodeIndex int

NodeIndex identifies one internal query node.

func MergeBases

func MergeBases(ctx *Context, left, right NodeIndex) ([]NodeIndex, error)

MergeBases computes fully reduced merge bases using one query context.

type Parent

type Parent struct {
	ID          objectid.ObjectID
	GraphPos    commitgraphread.Position
	HasGraphPos bool
}

Parent references one commit parent.

type PriorityQueue

type PriorityQueue struct {
	// contains filtered or unexported fields
}

PriorityQueue orders internal nodes using one query context's comparator.

func NewPriorityQueue

func NewPriorityQueue(ctx *Context) *PriorityQueue

NewPriorityQueue builds one empty priority queue over one query context.

func (*PriorityQueue) Len

func (queue *PriorityQueue) Len() int

Len reports the number of queued items.

func (*PriorityQueue) Less

func (queue *PriorityQueue) Less(left, right int) bool

Less reports whether one heap slot sorts ahead of another.

func (*PriorityQueue) Pop

func (queue *PriorityQueue) Pop() any

Pop removes one heap element.

func (*PriorityQueue) PopNode

func (queue *PriorityQueue) PopNode() NodeIndex

PopNode removes the highest-priority internal node.

func (*PriorityQueue) Push

func (queue *PriorityQueue) Push(item any)

Push appends one heap element.

func (*PriorityQueue) PushNode

func (queue *PriorityQueue) PushNode(idx NodeIndex)

PushNode inserts one internal node.

func (*PriorityQueue) Swap

func (queue *PriorityQueue) Swap(left, right int)

Swap exchanges two heap slots.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL