From 66f2210feca0b50d305a46a203c2b3d2f4d3790b Mon Sep 17 00:00:00 2001 From: John Olheiser Date: Tue, 29 Mar 2022 10:47:44 -0500 Subject: [PATCH] More commit info from API (#19252) Signed-off-by: jolheiser Co-authored-by: Lunny Xiao --- modules/convert/git_commit.go | 14 ++++++++++++++ modules/structs/repo_commit.go | 19 ++++++++++++++----- templates/swagger/v1_json.tmpl | 28 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/modules/convert/git_commit.go b/modules/convert/git_commit.go index a5c3112f13..dfd6cb080c 100644 --- a/modules/convert/git_commit.go +++ b/modules/convert/git_commit.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/log" api "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" + "code.gitea.io/gitea/services/gitdiff" ) // ToCommitUser convert a git.Signature to an api.CommitUser @@ -146,6 +147,13 @@ func ToCommit(repo *repo_model.Repository, gitRepo *git.Repository, commit *git. } } + diff, err := gitdiff.GetDiff(gitRepo, &gitdiff.DiffOptions{ + AfterCommitID: commit.ID.String(), + }) + if err != nil { + return nil, err + } + return &api.Commit{ CommitMeta: &api.CommitMeta{ URL: repo.APIURL() + "/git/commits/" + url.PathEscape(commit.ID.String()), @@ -175,10 +183,16 @@ func ToCommit(repo *repo_model.Repository, gitRepo *git.Repository, commit *git. SHA: commit.ID.String(), Created: commit.Committer.When, }, + Verification: ToVerification(commit), }, Author: apiAuthor, Committer: apiCommitter, Parents: apiParents, Files: affectedFileList, + Stats: &api.CommitStats{ + Total: diff.TotalAddition + diff.TotalDeletion, + Additions: diff.TotalAddition, + Deletions: diff.TotalDeletion, + }, }, nil } diff --git a/modules/structs/repo_commit.go b/modules/structs/repo_commit.go index f5c5f1b940..55a516a975 100644 --- a/modules/structs/repo_commit.go +++ b/modules/structs/repo_commit.go @@ -32,11 +32,19 @@ type CommitUser struct { // RepoCommit contains information of a commit in the context of a repository. type RepoCommit struct { - URL string `json:"url"` - Author *CommitUser `json:"author"` - Committer *CommitUser `json:"committer"` - Message string `json:"message"` - Tree *CommitMeta `json:"tree"` + URL string `json:"url"` + Author *CommitUser `json:"author"` + Committer *CommitUser `json:"committer"` + Message string `json:"message"` + Tree *CommitMeta `json:"tree"` + Verification *PayloadCommitVerification `json:"verification"` +} + +// CommitStats is statistics for a RepoCommit +type CommitStats struct { + Total int `json:"total"` + Additions int `json:"additions"` + Deletions int `json:"deletions"` } // Commit contains information generated from a Git commit. @@ -48,6 +56,7 @@ type Commit struct { Committer *User `json:"committer"` Parents []*CommitMeta `json:"parents"` Files []*CommitAffectedFiles `json:"files"` + Stats *CommitStats `json:"stats"` } // CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 284e1c71a0..16e3a34856 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -13127,6 +13127,9 @@ "type": "string", "x-go-name": "SHA" }, + "stats": { + "$ref": "#/definitions/CommitStats" + }, "url": { "type": "string", "x-go-name": "URL" @@ -13182,6 +13185,28 @@ }, "x-go-package": "code.gitea.io/gitea/modules/structs" }, + "CommitStats": { + "description": "CommitStats is statistics for a RepoCommit", + "type": "object", + "properties": { + "additions": { + "type": "integer", + "format": "int64", + "x-go-name": "Additions" + }, + "deletions": { + "type": "integer", + "format": "int64", + "x-go-name": "Deletions" + }, + "total": { + "type": "integer", + "format": "int64", + "x-go-name": "Total" + } + }, + "x-go-package": "code.gitea.io/gitea/modules/structs" + }, "CommitStatus": { "description": "CommitStatus holds a single status of a single Commit", "type": "object", @@ -17137,6 +17162,9 @@ "url": { "type": "string", "x-go-name": "URL" + }, + "verification": { + "$ref": "#/definitions/PayloadCommitVerification" } }, "x-go-package": "code.gitea.io/gitea/modules/structs"