Deal with merge conflicts

This commit is contained in:
Corey Johnson 2020-05-19 11:29:00 -07:00
parent ea164a8d48
commit 6666adbdce
2 changed files with 20 additions and 2 deletions

View file

@ -45,6 +45,7 @@ type PullRequest struct {
BaseRefName string
HeadRefName string
Body string
Mergeable string
Author struct {
Login string
@ -228,6 +229,7 @@ func PullRequests(client *Client, repo ghrepo.Interface, currentPRNumber int, cu
state
url
headRefName
mergeable
headRepositoryOwner {
login
}
@ -382,6 +384,7 @@ func PullRequestByNumber(client *Client, repo ghrepo.Interface, number int) (*Pu
state
closed
body
mergeable
author {
login
}
@ -490,6 +493,7 @@ func PullRequestForBranch(client *Client, repo ghrepo.Interface, baseBranch, hea
title
state
body
mergeable
author {
login
}

View file

@ -449,7 +449,15 @@ func prMerge(cmd *cobra.Command, args []string) error {
var pr *api.PullRequest
if len(args) > 0 {
pr, err = prFromArg(apiClient, baseRepo, args[0])
var prNumber string
n, _ := prFromURL(args[0])
if n != "" {
prNumber = n
} else {
prNumber = args[0]
}
pr, err = prFromArg(apiClient, baseRepo, prNumber)
if err != nil {
return err
}
@ -469,7 +477,13 @@ func prMerge(cmd *cobra.Command, args []string) error {
}
}
if pr.State == "MERGED" {
if pr.Mergeable == "CONFLICTING" {
err := fmt.Errorf("%s Pull request #%d has conflicts and isn't mergeable ", utils.Red("!"), pr.Number)
return err
} else if pr.Mergeable == "UNKNOWN" {
err := fmt.Errorf("%s Pull request #%d can't be merged right now", utils.Red("!"), pr.Number)
return err
} else if pr.State == "MERGED" {
err := fmt.Errorf("%s Pull request #%d was already merged", utils.Red("!"), pr.Number)
return err
}