From b82b5bf80bb217339bee51736bcb78b5b3a03a30 Mon Sep 17 00:00:00 2001 From: yystopf <yystopf@163.com> Date: Fri, 24 Sep 2021 17:49:54 +0800 Subject: [PATCH] add: add tag message --- modules/convert/convert.go | 34 ++++++++++++++++++++++------------ modules/structs/repo_tag.go | 34 +++++++++++++++++++++------------- routers/api/v1/repo/tag.go | 15 +++------------ 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/modules/convert/convert.go b/modules/convert/convert.go index e7e40a30c..bfba5ede8 100644 --- a/modules/convert/convert.go +++ b/modules/convert/convert.go @@ -168,19 +168,29 @@ func ToBranchProtection(bp *models.ProtectedBranch) *api.BranchProtection { // } // } -func ToTag(repo *models.Repository, t *git.Tag, release *models.Release) *api.Tag { - release.Publisher, _ = models.GetUserByID(release.PublisherID) - - commit, _ := t.Commit() +func ToTag(repo *models.Repository, t *git.Tag) *api.Tag { return &api.Tag{ - Name: t.Name, - ID: t.ID.String(), - Commit: ToCommitMeta(repo, t), - Commiter: ToCommitUserFolk(release.Publisher), - ZipballURL: util.URLJoin(repo.HTMLURL(), "archive", t.Name+".zip"), - TarballURL: util.URLJoin(repo.HTMLURL(), "archive", t.Name+".tar.gz"), - CommitTime: release.CreatedUnix.AsTime().String(), - CommitMessage: commit.CommitMessage, + Name: t.Name, + ID: t.ID.String(), + Commit: ToTagCommit(repo, t), + Tagger: ToCommitUser(t.Tagger), + Message: t.Message, + ZipballURL: util.URLJoin(repo.HTMLURL(), "archive", t.Name+".zip"), + TarballURL: util.URLJoin(repo.HTMLURL(), "archive", t.Name+".tar.gz"), + } +} + +func ToTagCommit(repo *models.Repository, t *git.Tag) *api.TagCommit { + commit, err := t.Commit() + if err != nil { + log.Error("Commit", err) + return &api.TagCommit{} + } + return &api.TagCommit{ + CommitMeta: ToCommitMeta(repo, t), + Commiter: ToCommitUser(commit.Committer), + Author: ToCommitUser(commit.Author), + Message: commit.CommitMessage, } } diff --git a/modules/structs/repo_tag.go b/modules/structs/repo_tag.go index 795113b09..003724a0a 100644 --- a/modules/structs/repo_tag.go +++ b/modules/structs/repo_tag.go @@ -1,3 +1,11 @@ +/* + * @Description: Do not edit + * @Date: 2021-09-23 17:10:03 + * @LastEditors: viletyy + * @Author: viletyy + * @LastEditTime: 2021-09-24 17:45:38 + * @FilePath: /gitea-1120-rc1/modules/structs/repo_tag.go + */ // Copyright 2019 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. @@ -6,21 +14,21 @@ package structs // Tag represents a repository tag type Tag struct { - Name string `json:"name"` - ID string `json:"id"` - Commit *CommitMeta `json:"commit"` - ZipballURL string `json:"zipball_url"` - TarballURL string `json:"tarball_url"` - Commiter *CommitUser `json:"commiter"` - CommitTime string `json:"commit_time"` - CommitMessage string `json:"commit_message"` - // User *CommitUser `json:"user"` + Name string `json:"name"` + ID string `json:"id"` + Commit *TagCommit `json:"commit"` + Tagger *CommitUser `json:"tagger"` + Message string `json:"message"` + ZipballURL string `json:"zipball_url"` + TarballURL string `json:"tarball_url"` } -type SortTagReleases []*Tag -func (s SortTagReleases) Len() int { return len(s) } -func (s SortTagReleases) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s SortTagReleases) Less(i, j int) bool { return s[i].CommitTime > s[j].CommitTime } +type TagCommit struct { + *CommitMeta + Commiter *CommitUser `json:"commiter"` + Author *CommitUser `json:"author"` + Message string `json:"message"` +} // AnnotatedTag represents an annotated tag type AnnotatedTag struct { diff --git a/routers/api/v1/repo/tag.go b/routers/api/v1/repo/tag.go index 0b99b6e70..76c612bea 100644 --- a/routers/api/v1/repo/tag.go +++ b/routers/api/v1/repo/tag.go @@ -6,9 +6,7 @@ package repo import ( "net/http" - "sort" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/convert" api "code.gitea.io/gitea/modules/structs" @@ -55,17 +53,10 @@ func ListTags(ctx *context.APIContext) { apiTags := make([]*api.Tag, len(tags)) for i := range tags { - // commit, err := tags[i].Commit() - - release, err := models.GetRelease(ctx.Repo.Repository.ID, tags[i].Name) - if err != nil { - ctx.Error(http.StatusBadRequest, "GetRelease", err) - } - apiTags[i] = convert.ToTag(ctx.Repo.Repository, tags[i], release) - + apiTags[i] = convert.ToTag(ctx.Repo.Repository, tags[i]) } - sort.Sort(api.SortTagReleases(apiTags)) - ctx.JSON(http.StatusOK, apiTags) + + ctx.JSON(http.StatusOK, &apiTags) } // GetTag get the tag of a repository.