aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Olheiser <john.olheiser@gmail.com>2022-03-29 10:47:44 -0500
committerGitHub <noreply@github.com>2022-03-29 10:47:44 -0500
commit66f2210feca0b50d305a46a203c2b3d2f4d3790b (patch)
tree43b3630b5fbf0e2dfd1eac5ce0156b82be2016bb
parent74731c3a5aea71c81e4ca75bde96154f3adf3cfa (diff)
downloadgitea-66f2210feca0b50d305a46a203c2b3d2f4d3790b.tar.gz
gitea-66f2210feca0b50d305a46a203c2b3d2f4d3790b.zip
More commit info from API (#19252)
Signed-off-by: jolheiser <john.olheiser@gmail.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
-rw-r--r--modules/convert/git_commit.go14
-rw-r--r--modules/structs/repo_commit.go19
-rw-r--r--templates/swagger/v1_json.tmpl28
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"