More commit info from API (#19252)

Signed-off-by: jolheiser <john.olheiser@gmail.com>

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
John Olheiser 2022-03-29 10:47:44 -05:00 committed by GitHub
parent 74731c3a5a
commit 66f2210fec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 5 deletions

View file

@ -14,6 +14,7 @@ import (
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/services/gitdiff"
) )
// ToCommitUser convert a git.Signature to an api.CommitUser // 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{ return &api.Commit{
CommitMeta: &api.CommitMeta{ CommitMeta: &api.CommitMeta{
URL: repo.APIURL() + "/git/commits/" + url.PathEscape(commit.ID.String()), 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(), SHA: commit.ID.String(),
Created: commit.Committer.When, Created: commit.Committer.When,
}, },
Verification: ToVerification(commit),
}, },
Author: apiAuthor, Author: apiAuthor,
Committer: apiCommitter, Committer: apiCommitter,
Parents: apiParents, Parents: apiParents,
Files: affectedFileList, Files: affectedFileList,
Stats: &api.CommitStats{
Total: diff.TotalAddition + diff.TotalDeletion,
Additions: diff.TotalAddition,
Deletions: diff.TotalDeletion,
},
}, nil }, nil
} }

View file

@ -37,6 +37,14 @@ type RepoCommit struct {
Committer *CommitUser `json:"committer"` Committer *CommitUser `json:"committer"`
Message string `json:"message"` Message string `json:"message"`
Tree *CommitMeta `json:"tree"` 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. // Commit contains information generated from a Git commit.
@ -48,6 +56,7 @@ type Commit struct {
Committer *User `json:"committer"` Committer *User `json:"committer"`
Parents []*CommitMeta `json:"parents"` Parents []*CommitMeta `json:"parents"`
Files []*CommitAffectedFiles `json:"files"` Files []*CommitAffectedFiles `json:"files"`
Stats *CommitStats `json:"stats"`
} }
// CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE // CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE

View file

@ -13127,6 +13127,9 @@
"type": "string", "type": "string",
"x-go-name": "SHA" "x-go-name": "SHA"
}, },
"stats": {
"$ref": "#/definitions/CommitStats"
},
"url": { "url": {
"type": "string", "type": "string",
"x-go-name": "URL" "x-go-name": "URL"
@ -13182,6 +13185,28 @@
}, },
"x-go-package": "code.gitea.io/gitea/modules/structs" "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": { "CommitStatus": {
"description": "CommitStatus holds a single status of a single Commit", "description": "CommitStatus holds a single status of a single Commit",
"type": "object", "type": "object",
@ -17137,6 +17162,9 @@
"url": { "url": {
"type": "string", "type": "string",
"x-go-name": "URL" "x-go-name": "URL"
},
"verification": {
"$ref": "#/definitions/PayloadCommitVerification"
} }
}, },
"x-go-package": "code.gitea.io/gitea/modules/structs" "x-go-package": "code.gitea.io/gitea/modules/structs"