MCPcopy
hub / github.com/cli/cli / NewMergeContext

Function NewMergeContext

pkg/cmd/pr/merge/merge.go:505–534  ·  view source on GitHub ↗

Creates a new MergeContext from MergeOptions.

(opts *MergeOptions)

Source from the content-addressed store, hash-verified

503
504// Creates a new MergeContext from MergeOptions.
505func NewMergeContext(opts *MergeOptions) (*mergeContext, error) {
506 findOptions := shared.FindOptions{
507 Selector: opts.SelectorArg,
508 Fields: []string{"id", "number", "state", "title", "lastCommit", "mergeStateStatus", "headRepositoryOwner", "headRefName", "baseRefName", "headRefOid", "isInMergeQueue", "isMergeQueueEnabled"},
509 }
510 pr, baseRepo, err := opts.Finder.Find(findOptions)
511 if err != nil {
512 return nil, err
513 }
514
515 httpClient, err := opts.HttpClient()
516 if err != nil {
517 return nil, err
518 }
519
520 return &mergeContext{
521 opts: opts,
522 pr: pr,
523 cs: opts.IO.ColorScheme(),
524 baseRepo: baseRepo,
525 isTerminal: opts.IO.IsStdoutTTY(),
526 httpClient: httpClient,
527 merged: pr.State == MergeStateStatusMerged,
528 deleteBranch: opts.DeleteBranch,
529 crossRepoPR: pr.HeadRepositoryOwner.Login != baseRepo.RepoOwner(),
530 autoMerge: opts.AutoMergeEnable && !isImmediatelyMergeable(pr.MergeStateStatus),
531 localBranchExists: opts.CanDeleteLocalBranch && opts.GitClient.HasLocalBranch(context.Background(), pr.HeadRefName),
532 mergeQueueRequired: pr.IsMergeQueueEnabled,
533 }, nil
534}
535
536// Run the merge command.
537func mergeRun(opts *MergeOptions) error {

Callers 1

mergeRunFunction · 0.85

Calls 6

isImmediatelyMergeableFunction · 0.85
ColorSchemeMethod · 0.80
IsStdoutTTYMethod · 0.80
FindMethod · 0.65
RepoOwnerMethod · 0.65
HasLocalBranchMethod · 0.65

Tested by

no test coverage detected