From 5283ce9650b1ada6b4bd38212ca44ba77297a31b Mon Sep 17 00:00:00 2001 From: Michael Santos Date: Mon, 9 Oct 2023 07:22:12 -0400 Subject: [PATCH] api: GetPullRequestCommits: return file list (#27483) Fixes https://github.com/go-gitea/gitea/issues/27481 ---- Co-authored-by: silverwind Co-authored-by: wxiaoguang --- routers/api/v1/repo/notes.go | 18 ++++++++++++++- routers/api/v1/repo/pull.go | 18 ++++++++++++++- templates/swagger/v1_json.tmpl | 24 ++++++++++++++++++++ tests/integration/api_pull_commits_test.go | 5 ++++ tests/integration/api_repo_git_notes_test.go | 2 ++ 5 files changed, 65 insertions(+), 2 deletions(-) diff --git a/routers/api/v1/repo/notes.go b/routers/api/v1/repo/notes.go index 1bd66101f0d..0b259703dea 100644 --- a/routers/api/v1/repo/notes.go +++ b/routers/api/v1/repo/notes.go @@ -36,6 +36,14 @@ func GetNote(ctx *context.APIContext) { // description: a git ref or commit sha // type: string // required: true + // - name: verification + // in: query + // description: include verification for every commit (disable for speedup, default 'true') + // type: boolean + // - name: files + // in: query + // description: include a list of affected files for every commit (disable for speedup, default 'true') + // type: boolean // responses: // "200": // "$ref": "#/responses/Note" @@ -78,7 +86,15 @@ func getNote(ctx *context.APIContext, identifier string) { return } - cmt, err := convert.ToCommit(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, note.Commit, nil, convert.ToCommitOptions{Stat: true}) + verification := ctx.FormString("verification") == "" || ctx.FormBool("verification") + files := ctx.FormString("files") == "" || ctx.FormBool("files") + + cmt, err := convert.ToCommit(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, note.Commit, nil, + convert.ToCommitOptions{ + Stat: true, + Verification: verification, + Files: files, + }) if err != nil { ctx.Error(http.StatusInternalServerError, "ToCommit", err) return diff --git a/routers/api/v1/repo/pull.go b/routers/api/v1/repo/pull.go index 586f3385b18..6fcc5267cf1 100644 --- a/routers/api/v1/repo/pull.go +++ b/routers/api/v1/repo/pull.go @@ -1275,6 +1275,14 @@ func GetPullRequestCommits(ctx *context.APIContext) { // in: query // description: page size of results // type: integer + // - name: verification + // in: query + // description: include verification for every commit (disable for speedup, default 'true') + // type: boolean + // - name: files + // in: query + // description: include a list of affected files for every commit (disable for speedup, default 'true') + // type: boolean // responses: // "200": // "$ref": "#/responses/CommitList" @@ -1328,9 +1336,17 @@ func GetPullRequestCommits(ctx *context.APIContext) { end = totalNumberOfCommits } + verification := ctx.FormString("verification") == "" || ctx.FormBool("verification") + files := ctx.FormString("files") == "" || ctx.FormBool("files") + apiCommits := make([]*api.Commit, 0, end-start) for i := start; i < end; i++ { - apiCommit, err := convert.ToCommit(ctx, ctx.Repo.Repository, baseGitRepo, commits[i], userCache, convert.ToCommitOptions{Stat: true}) + apiCommit, err := convert.ToCommit(ctx, ctx.Repo.Repository, baseGitRepo, commits[i], userCache, + convert.ToCommitOptions{ + Stat: true, + Verification: verification, + Files: files, + }) if err != nil { ctx.ServerError("toCommit", err) return diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index abe579ac826..2389ec3beee 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -5239,6 +5239,18 @@ "name": "sha", "in": "path", "required": true + }, + { + "type": "boolean", + "description": "include verification for every commit (disable for speedup, default 'true')", + "name": "verification", + "in": "query" + }, + { + "type": "boolean", + "description": "include a list of affected files for every commit (disable for speedup, default 'true')", + "name": "files", + "in": "query" } ], "responses": { @@ -10521,6 +10533,18 @@ "description": "page size of results", "name": "limit", "in": "query" + }, + { + "type": "boolean", + "description": "include verification for every commit (disable for speedup, default 'true')", + "name": "verification", + "in": "query" + }, + { + "type": "boolean", + "description": "include a list of affected files for every commit (disable for speedup, default 'true')", + "name": "files", + "in": "query" } ], "responses": { diff --git a/tests/integration/api_pull_commits_test.go b/tests/integration/api_pull_commits_test.go index 0bcfb906845..ad0cb0329cc 100644 --- a/tests/integration/api_pull_commits_test.go +++ b/tests/integration/api_pull_commits_test.go @@ -35,6 +35,11 @@ func TestAPIPullCommits(t *testing.T) { assert.Equal(t, "5f22f7d0d95d614d25a5b68592adb345a4b5c7fd", commits[0].SHA) assert.Equal(t, "4a357436d925b5c974181ff12a994538ddc5a269", commits[1].SHA) + + assert.NotEmpty(t, commits[0].Files) + assert.NotEmpty(t, commits[1].Files) + assert.NotNil(t, commits[0].RepoCommit.Verification) + assert.NotNil(t, commits[1].RepoCommit.Verification) } // TODO add tests for already merged PR and closed PR diff --git a/tests/integration/api_repo_git_notes_test.go b/tests/integration/api_repo_git_notes_test.go index 30846f235fd..a7327d93274 100644 --- a/tests/integration/api_repo_git_notes_test.go +++ b/tests/integration/api_repo_git_notes_test.go @@ -37,5 +37,7 @@ func TestAPIReposGitNotes(t *testing.T) { var apiData api.Note DecodeJSON(t, resp, &apiData) assert.Equal(t, "This is a test note\n", apiData.Message) + assert.NotEmpty(t, apiData.Commit.Files) + assert.NotNil(t, apiData.Commit.RepoCommit.Verification) }) }