diff options
author | qwerty287 <80460567+qwerty287@users.noreply.github.com> | 2022-09-29 04:27:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-29 04:27:20 +0200 |
commit | 1dfa28ffa557720d164a351783be64c9a47a0adb (patch) | |
tree | 93c7cae9241eb71f8d377c8f089417ac7dcf448b /modules/convert | |
parent | 78c15dabf33f32050757ab410266ddb348c1a863 (diff) | |
download | gitea-1dfa28ffa557720d164a351783be64c9a47a0adb.tar.gz gitea-1dfa28ffa557720d164a351783be64c9a47a0adb.zip |
Add API endpoint to get changed files of a PR (#21177)
This adds an api endpoint `/files` to PRs that allows to get a list of changed files.
built upon #18228, reviews there are included
closes https://github.com/go-gitea/gitea/issues/654
Co-authored-by: Anton Bracke <anton@ju60.de>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'modules/convert')
-rw-r--r-- | modules/convert/convert.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/modules/convert/convert.go b/modules/convert/convert.go index c62b4303ed..0e67563077 100644 --- a/modules/convert/convert.go +++ b/modules/convert/convert.go @@ -27,6 +27,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" webhook_service "code.gitea.io/gitea/services/webhook" ) @@ -414,3 +415,36 @@ func ToLFSLock(l *git_model.LFSLock) *api.LFSLock { }, } } + +// ToChangedFile convert a gitdiff.DiffFile to api.ChangedFile +func ToChangedFile(f *gitdiff.DiffFile, repo *repo_model.Repository, commit string) *api.ChangedFile { + status := "changed" + if f.IsDeleted { + status = "deleted" + } else if f.IsCreated { + status = "added" + } else if f.IsRenamed && f.Type == gitdiff.DiffFileCopy { + status = "copied" + } else if f.IsRenamed && f.Type == gitdiff.DiffFileRename { + status = "renamed" + } else if f.Addition == 0 && f.Deletion == 0 { + status = "unchanged" + } + + file := &api.ChangedFile{ + Filename: f.GetDiffFileName(), + Status: status, + Additions: f.Addition, + Deletions: f.Deletion, + Changes: f.Addition + f.Deletion, + HTMLURL: fmt.Sprint(repo.HTMLURL(), "/src/commit/", commit, "/", util.PathEscapeSegments(f.GetDiffFileName())), + ContentsURL: fmt.Sprint(repo.APIURL(), "/contents/", util.PathEscapeSegments(f.GetDiffFileName()), "?ref=", commit), + RawURL: fmt.Sprint(repo.HTMLURL(), "/raw/commit/", commit, "/", util.PathEscapeSegments(f.GetDiffFileName())), + } + + if status == "rename" { + file.PreviousFilename = f.OldName + } + + return file +} |