summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcaicandong <50507092+CaiCandong@users.noreply.github.com>2023-07-31 10:21:09 +0800
committerGitHub <noreply@github.com>2023-07-31 02:21:09 +0000
commit983167cf49cd64c7a1f28c39aff03e00dd387990 (patch)
treea83bc57f7d441c0027a58e7ac0e7855f5940ffb3
parentea385f5d39a286ec36f3735fc7c5211b141f6165 (diff)
downloadgitea-983167cf49cd64c7a1f28c39aff03e00dd387990.tar.gz
gitea-983167cf49cd64c7a1f28c39aff03e00dd387990.zip
Fix pull request check list is limited (#26179)
In the original implementation, we can only get the first 30 records of the commit status (the default paging size), if the commit status is more than 30, it will lead to the bug #25990. I made the following two changes. - On the page, use the ` db.ListOptions{ListAll: true}` parameter instead of `db.ListOptions{}` - The `GetLatestCommitStatus` function makes a determination as to whether or not a pager is being used. fixed #25990
-rw-r--r--models/git/commit_status.go6
-rw-r--r--routers/web/repo/commit.go2
-rw-r--r--routers/web/repo/pull.go6
-rw-r--r--routers/web/repo/view.go2
-rw-r--r--services/actions/commit_status.go2
-rw-r--r--services/pull/commit_status.go2
-rw-r--r--services/pull/pull.go2
7 files changed, 11 insertions, 11 deletions
diff --git a/models/git/commit_status.go b/models/git/commit_status.go
index 17090f30dd..e7616fb167 100644
--- a/models/git/commit_status.go
+++ b/models/git/commit_status.go
@@ -283,9 +283,9 @@ func GetLatestCommitStatus(ctx context.Context, repoID int64, sha string, listOp
Where("repo_id = ?", repoID).And("sha = ?", sha).
Select("max( id ) as id").
GroupBy("context_hash").OrderBy("max( id ) desc")
-
- sess = db.SetSessionPagination(sess, &listOptions)
-
+ if !listOptions.IsListAll() {
+ sess = db.SetSessionPagination(sess, &listOptions)
+ }
count, err := sess.FindAndCount(&ids)
if err != nil {
return nil, count, err
diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go
index 5b32591b89..7513f9360b 100644
--- a/routers/web/repo/commit.go
+++ b/routers/web/repo/commit.go
@@ -349,7 +349,7 @@ func Diff(ctx *context.Context) {
ctx.Data["Commit"] = commit
ctx.Data["Diff"] = diff
- statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, commitID, db.ListOptions{})
+ statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, commitID, db.ListOptions{ListAll: true})
if err != nil {
log.Error("GetLatestCommitStatus: %v", err)
}
diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go
index a24ef43367..d76e90bf24 100644
--- a/routers/web/repo/pull.go
+++ b/routers/web/repo/pull.go
@@ -469,7 +469,7 @@ func PrepareMergedViewPullInfo(ctx *context.Context, issue *issues_model.Issue)
if len(compareInfo.Commits) != 0 {
sha := compareInfo.Commits[0].ID.String()
- commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, sha, db.ListOptions{})
+ commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, sha, db.ListOptions{ListAll: true})
if err != nil {
ctx.ServerError("GetLatestCommitStatus", err)
return nil
@@ -531,7 +531,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
ctx.ServerError(fmt.Sprintf("GetRefCommitID(%s)", pull.GetGitRefName()), err)
return nil
}
- commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptions{})
+ commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptions{ListAll: true})
if err != nil {
ctx.ServerError("GetLatestCommitStatus", err)
return nil
@@ -623,7 +623,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
return nil
}
- commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptions{})
+ commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptions{ListAll: true})
if err != nil {
ctx.ServerError("GetLatestCommitStatus", err)
return nil
diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go
index 221c1f4c4f..ae22bae9c1 100644
--- a/routers/web/repo/view.go
+++ b/routers/web/repo/view.go
@@ -842,7 +842,7 @@ func renderDirectoryFiles(ctx *context.Context, timeout time.Duration) git.Entri
ctx.Data["LatestCommitVerification"] = verification
ctx.Data["LatestCommitUser"] = user_model.ValidateCommitWithEmail(ctx, latestCommit)
- statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, latestCommit.ID.String(), db.ListOptions{})
+ statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, latestCommit.ID.String(), db.ListOptions{ListAll: true})
if err != nil {
log.Error("GetLatestCommitStatus: %v", err)
}
diff --git a/services/actions/commit_status.go b/services/actions/commit_status.go
index 925d0a3396..08a7dde67c 100644
--- a/services/actions/commit_status.go
+++ b/services/actions/commit_status.go
@@ -75,7 +75,7 @@ func createCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er
}
ctxname := fmt.Sprintf("%s / %s (%s)", runName, job.Name, event)
state := toCommitStatus(job.Status)
- if statuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptions{}); err == nil {
+ if statuses, _, err := git_model.GetLatestCommitStatus(ctx, repo.ID, sha, db.ListOptions{ListAll: true}); err == nil {
for _, v := range statuses {
if v.Context == ctxname {
if v.State == state {
diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go
index 51ba06da27..39d60380ff 100644
--- a/services/pull/commit_status.go
+++ b/services/pull/commit_status.go
@@ -143,7 +143,7 @@ func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullR
return "", errors.Wrap(err, "LoadBaseRepo")
}
- commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, pr.BaseRepo.ID, sha, db.ListOptions{})
+ commitStatuses, _, err := git_model.GetLatestCommitStatus(ctx, pr.BaseRepo.ID, sha, db.ListOptions{ListAll: true})
if err != nil {
return "", errors.Wrap(err, "GetLatestCommitStatus")
}
diff --git a/services/pull/pull.go b/services/pull/pull.go
index 8c0b65fd8b..cf49d2fe20 100644
--- a/services/pull/pull.go
+++ b/services/pull/pull.go
@@ -804,7 +804,7 @@ func getAllCommitStatus(gitRepo *git.Repository, pr *issues_model.PullRequest) (
return nil, nil, shaErr
}
- statuses, _, err = git_model.GetLatestCommitStatus(db.DefaultContext, pr.BaseRepo.ID, sha, db.ListOptions{})
+ statuses, _, err = git_model.GetLatestCommitStatus(db.DefaultContext, pr.BaseRepo.ID, sha, db.ListOptions{ListAll: true})
lastStatus = git_model.CalcCommitStatus(statuses)
return statuses, lastStatus, err
}