更改: 返回旧版参数

This commit is contained in:
yystopf 2024-11-11 10:50:51 +08:00
parent 5a5c6d062f
commit 7cc49acd7e
5 changed files with 129 additions and 17 deletions

View File

@ -2,15 +2,18 @@ package convert
import (
"encoding/json"
"fmt"
"strings"
"code.gitea.io/gitea/models/organization"
"code.gitea.io/gitea/models/repo"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/webhook"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/util"
gitea_convert "code.gitea.io/gitea/services/convert"
"code.gitea.io/gitea/services/gitdiff"
api "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/structs"
)
@ -92,3 +95,28 @@ func ToHookTask(t *webhook.HookTask) *api.HookTask {
ResponseContent: responseContent,
}
}
func ToChangedFile(f *gitdiff.DiffFile, repo *repo_model.Repository, commit string) *api.ChangedFile {
file := &api.ChangedFile{
Filename: f.GetDiffFileName(),
OldName: f.OldName,
Index: f.Index,
Type: f.Type,
IsBin: f.IsBin,
IsCreated: f.IsCreated,
IsDeleted: f.IsDeleted,
IsLFSFile: f.IsLFSFile,
IsRenamed: f.IsRenamed,
IsSubmodule: f.IsSubmodule,
Additions: f.Addition,
Deletions: f.Deletion,
Changes: f.Addition + f.Deletion,
Sha: commit,
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())),
}
return file
}

View File

@ -4,6 +4,7 @@ import (
"time"
gitea_api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/services/gitdiff"
)
type PullRequest struct {
@ -39,3 +40,23 @@ type PullRequest struct {
CommitNum int `json:"commit_num"`
ChangedFiles int `json:"changed_files"`
}
type ChangedFile struct {
Filename string `json:"filename"`
OldName string `json:"old_name"`
Index int `json:"index"`
Type gitdiff.DiffFileType `json:"type"`
IsBin bool `json:"is_bin"`
IsCreated bool `json:"is_created"`
IsDeleted bool `json:"is_deleted"`
IsLFSFile bool `json:"is_lfs_file"`
IsRenamed bool `json:"is_renamed"`
IsSubmodule bool `json:"is_submodule"`
Additions int `json:"additions"`
Deletions int `json:"deletions"`
Changes int `json:"changes"`
Sha string `json:"sha"`
HTMLURL string `json:"html_url,omitempty"`
ContentsURL string `json:"contents_url,omitempty"`
RawURL string `json:"raw_url,omitempty"`
}

View File

@ -18,6 +18,7 @@ import (
"code.gitea.io/gitea/services/gitdiff"
hat_convert "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/convert"
hat_git "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/git"
hat_api "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/structs"
)
func GetAllCommitsSliceByTime(ctx *context.APIContext) {
@ -358,11 +359,10 @@ func GetCommitFiles(ctx *context.APIContext) {
lenFiles = 0
}
apiFiles := make([]*api.ChangedFile, 0, lenFiles)
apiFiles := make([]*hat_api.ChangedFile, 0, lenFiles)
for i := start; i < end; i++ {
apiFiles = append(apiFiles, convert.ToChangedFile(diff.Files[i], ctx.Repo.Repository, commitID))
apiFiles = append(apiFiles, hat_convert.ToChangedFile(diff.Files[i], ctx.Repo.Repository, commitID))
}
ctx.SetLinkHeader(totalNumberOfFiles, listOptions.PageSize)
ctx.SetTotalCountHeader(int64(totalNumberOfFiles))
@ -372,7 +372,15 @@ func GetCommitFiles(ctx *context.APIContext) {
ctx.RespHeader().Set("X-HasMore", strconv.FormatBool(listOptions.Page < totalNumberOfPages))
ctx.AppendAccessControlExposeHeaders("X-Page", "X-PerPage", "X-PageCount", "X-HasMore")
ctx.JSON(http.StatusOK, &apiFiles)
ctx.JSON(http.StatusOK, struct {
Files []*hat_api.ChangedFile `json:"files"`
TotalAddition int `json:"total_addition"`
TotalDeletion int `json:"total_deletion"`
}{
Files: apiFiles,
TotalAddition: diff.TotalAddition,
TotalDeletion: diff.TotalDeletion,
})
}
func GetCommitFilesByPath(ctx *context.APIContext) {

View File

@ -3,7 +3,9 @@ package repo
import (
"errors"
"fmt"
"math"
"net/http"
"strconv"
"strings"
"time"
@ -14,6 +16,7 @@ import (
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/routers/api/v1/utils"
"code.gitea.io/gitea/services/gitdiff"
"code.gitea.io/gitea/modules/context"
@ -28,6 +31,7 @@ import (
notify_service "code.gitea.io/gitea/services/notify"
pull_service "code.gitea.io/gitea/services/pull"
hat_convert "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/convert"
hat_api "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/structs"
hat_pull_service "code.gitlink.org.cn/Gitlink/gitea_hat.git/services/pull"
)
@ -391,16 +395,59 @@ func GetPullFiles(ctx *context.APIContext) {
ctx.ServerError("GetDiff", err)
return
}
isNew := ctx.FormString("isNew")
if isNew != "" {
listOptions := utils.GetListOptions(ctx)
fileDiff := struct {
*gitdiff.Diff
LatestSha string
}{
Diff: diff,
LatestSha: endCommitID,
totalNumberOfFiles := diff.NumFiles
totalNumberOfPages := int(math.Ceil(float64(totalNumberOfFiles) / float64(listOptions.PageSize)))
start, end := listOptions.GetStartEnd()
if end > totalNumberOfFiles {
end = totalNumberOfFiles
}
lenFiles := end - start
if lenFiles < 0 {
lenFiles = 0
}
apiFiles := make([]*hat_api.ChangedFile, 0, lenFiles)
for i := start; i < end; i++ {
apiFiles = append(apiFiles, hat_convert.ToChangedFile(diff.Files[i], ctx.Repo.Repository, headCommitID))
}
ctx.SetLinkHeader(totalNumberOfFiles, listOptions.PageSize)
ctx.SetTotalCountHeader(int64(totalNumberOfFiles))
ctx.RespHeader().Set("X-Page", strconv.Itoa(listOptions.Page))
ctx.RespHeader().Set("X-PerPage", strconv.Itoa(listOptions.PageSize))
ctx.RespHeader().Set("X-PageCount", strconv.Itoa(totalNumberOfPages))
ctx.RespHeader().Set("X-HasMore", strconv.FormatBool(listOptions.Page < totalNumberOfPages))
ctx.AppendAccessControlExposeHeaders("X-Page", "X-PerPage", "X-PageCount", "X-HasMore")
ctx.JSON(http.StatusOK, struct {
Files []*hat_api.ChangedFile `json:"files"`
TotalAddition int `json:"total_addition"`
TotalDeletion int `json:"total_deletion"`
}{
Files: apiFiles,
TotalAddition: diff.TotalAddition,
TotalDeletion: diff.TotalDeletion,
})
} else {
fileDiff := struct {
*gitdiff.Diff
LatestSha string
}{
Diff: diff,
LatestSha: endCommitID,
}
ctx.JSON(http.StatusOK, fileDiff)
}
ctx.JSON(http.StatusOK, fileDiff)
}
func GetPullFilesByPath(ctx *context.APIContext) {

View File

@ -19,11 +19,11 @@ import (
"code.gitea.io/gitea/modules/log"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/routers/api/v1/utils"
"code.gitea.io/gitea/services/convert"
"code.gitea.io/gitea/services/gitdiff"
hat_convert "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/convert"
hat_git "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/git"
hat_api "code.gitlink.org.cn/Gitlink/gitea_hat.git/modules/structs"
hat_repo_service "code.gitlink.org.cn/Gitlink/gitea_hat.git/services/repository"
)
@ -179,9 +179,9 @@ func CompareFiles(ctx *context.APIContext) {
lenFiles = 0
}
apiFiles := make([]*api.ChangedFile, 0, lenFiles)
apiFiles := make([]*hat_api.ChangedFile, 0, lenFiles)
for i := start; i < end; i++ {
apiFiles = append(apiFiles, convert.ToChangedFile(diff.Files[i], ctx.Repo.Repository, headCommitID))
apiFiles = append(apiFiles, hat_convert.ToChangedFile(diff.Files[i], ctx.Repo.Repository, headCommitID))
}
ctx.SetLinkHeader(totalNumberOfFiles, listOptions.PageSize)
@ -193,7 +193,15 @@ func CompareFiles(ctx *context.APIContext) {
ctx.RespHeader().Set("X-HasMore", strconv.FormatBool(listOptions.Page < totalNumberOfPages))
ctx.AppendAccessControlExposeHeaders("X-Page", "X-PerPage", "X-PageCount", "X-HasMore")
ctx.JSON(http.StatusOK, &apiFiles)
ctx.JSON(http.StatusOK, struct {
Files []*hat_api.ChangedFile `json:"files"`
TotalAddition int `json:"total_addition"`
TotalDeletion int `json:"total_deletion"`
}{
Files: apiFiles,
TotalAddition: diff.TotalAddition,
TotalDeletion: diff.TotalDeletion,
})
}
@ -253,7 +261,7 @@ func ParseCompareInfo(ctx *context.APIContext) (*user_model.User, *repo_model.Re
if shaFrom == "" || shaTo == "" {
infos = []string{baseRepo.DefaultBranch, baseRepo.DefaultBranch}
} else {
infos = []string{shaFrom, shaTo}
infos = []string{shaTo, shaFrom}
}
ctx.Data["BaseName"] = baseRepo.OwnerName