diff options
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 -} |
