Introduce workaround for missing pull head sha #340

Merged
zeripath merged 7 commits from 6543/tea:fix_318 into master 2021-03-07 19:45:50 +00:00
4 changed files with 39 additions and 0 deletions
Showing only changes of commit b7ede03f52 - Show all commits

View File

@ -12,6 +12,7 @@ import (
"code.gitea.io/tea/modules/interact"
"code.gitea.io/tea/modules/print"
"code.gitea.io/tea/modules/utils"
"code.gitea.io/tea/modules/workaround"
"code.gitea.io/sdk/gitea"
"github.com/urfave/cli/v2"
@ -65,6 +66,9 @@ func runPullDetail(cmd *cli.Context, index string) error {
if err != nil {
return err
}
if err := workaround.FixPullHeadSha(client, pr, ctx.Owner, ctx.Repo); err != nil {
return err
}
reviews, _, err := client.ListPullReviews(ctx.Owner, ctx.Repo, idx, gitea.ListPullReviewsOptions{})
if err != nil {

View File

@ -9,6 +9,7 @@ import (
"code.gitea.io/tea/modules/config"
local_git "code.gitea.io/tea/modules/git"
"code.gitea.io/tea/modules/workaround"
"github.com/go-git/go-git/v5"
git_plumbing "github.com/go-git/go-git/v5/plumbing"
@ -28,6 +29,10 @@ func PullCheckout(login *config.Login, repoOwner, repoName string, forceCreateBr
if err != nil {
return err
}
if err := workaround.FixPullHeadSha(client, pr, repoOwner, repoName); err != nil {
return err
}
remoteDeleted := pr.Head.Ref == fmt.Sprintf("refs/pull/%d/head", pr.Index)
if remoteDeleted {
return fmt.Errorf("Can't checkout: remote head branch was already deleted")

View File

@ -9,6 +9,7 @@ import (
"code.gitea.io/tea/modules/config"
local_git "code.gitea.io/tea/modules/git"
"code.gitea.io/tea/modules/workaround"
"code.gitea.io/sdk/gitea"
git_config "github.com/go-git/go-git/v5/config"
@ -33,6 +34,10 @@ func PullClean(login *config.Login, repoOwner, repoName string, index int64, ign
if err != nil {
return err
}
if err := workaround.FixPullHeadSha(client, pr, repoOwner, repoName); err != nil {
return err
}
if pr.State == gitea.StateOpen {
return fmt.Errorf("PR is still open, won't delete branches")
}

View File

@ -0,0 +1,25 @@
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package workaround
import (
"net/url"
"code.gitea.io/sdk/gitea"
)
// FixPullHeadSha is a workaround for https://github.com/go-gitea/gitea/issues/12675
func FixPullHeadSha(client *gitea.Client, pr *gitea.PullRequest, repoOwner, repoName string) error {
if pr.Head != nil && pr.Head.Sha == "" {
headCommit, resp, err := client.GetSingleCommit(repoOwner, repoName, url.PathEscape(pr.Head.Ref))
if err != nil && resp == nil || err != nil && resp.StatusCode != 404 {
return err
}
if headCommit != nil {
pr.Head.Sha = headCommit.SHA
}
}
return nil
}