diff options
| author | 2026-03-11 20:41:32 +0800 | |
|---|---|---|
| committer | 2026-03-11 20:41:32 +0800 | |
| commit | 040b572d95e4ca27e1ada6113c405b8a1eb4a669 (patch) | |
| tree | 68d826f4d91144105802c9d1c67175ba9b314e29 /mergebase/compute.go | |
| parent | research: Maybe drop mmap in packfile_bloom (diff) | |
| signature | No signature | |
commitquery: Merge from ancestor and mergebases
Diffstat (limited to 'mergebase/compute.go')
| -rw-r--r-- | mergebase/compute.go | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/mergebase/compute.go b/mergebase/compute.go deleted file mode 100644 index 76d2294c..00000000 --- a/mergebase/compute.go +++ /dev/null @@ -1,73 +0,0 @@ -package mergebase - -import ( - "slices" - - "codeberg.org/lindenii/furgit/internal/commitquery" - "codeberg.org/lindenii/furgit/internal/peel" - "codeberg.org/lindenii/furgit/objectid" -) - -// All returns all merge bases in Git's merge-base --all order. -func (query *Bases) All() ([]objectid.ObjectID, error) { - if query.computed { - return slices.Clone(query.bases), query.err - } - - query.computed = true - - leftCommit, err := peel.ToCommit(query.store, query.left) - if err != nil { - query.err = err - - return nil, err - } - - rightCommit, err := peel.ToCommit(query.store, query.right) - if err != nil { - query.err = err - - return nil, err - } - - ctx := commitquery.NewContext(query.store, query.graph) - - leftIdx, err := ctx.ResolveOID(leftCommit) - if err != nil { - query.err = err - - return nil, err - } - - rightIdx, err := ctx.ResolveOID(rightCommit) - if err != nil { - query.err = err - - return nil, err - } - - candidates, err := commitquery.MergeBases(ctx, leftIdx, rightIdx) - if err != nil { - query.err = err - - return nil, err - } - - slices.SortFunc(candidates, func(left, right commitquery.NodeIndex) int { - switch { - case ctx.CommitTime(left) > ctx.CommitTime(right): - return -1 - case ctx.CommitTime(left) < ctx.CommitTime(right): - return 1 - default: - return objectid.Compare(ctx.ID(left), ctx.ID(right)) - } - }) - - query.bases = make([]objectid.ObjectID, 0, len(candidates)) - for _, idx := range candidates { - query.bases = append(query.bases, ctx.ID(idx)) - } - - return slices.Clone(query.bases), nil -} |
