Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance release list #6025

Merged
merged 33 commits into from
Oct 22, 2020
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
5f123b0
show author for releases created outside Gitea UI.
adelowo Feb 9, 2019
09fef96
add migration for already existing tags
adelowo Mar 28, 2019
b453340
update as per review
adelowo Mar 29, 2019
f985e2c
fix merge conflicts
adelowo May 1, 2019
92b7dfd
Merge remote-tracking branch 'origin' into enhance_release_list
adelowo May 4, 2019
e50fe8d
Merge remote-tracking branch 'origin' into enhance_release_list
adelowo Dec 14, 2019
4eb786e
fix build
adelowo Dec 14, 2019
9fcf2cc
add space
adelowo Dec 14, 2019
cf5575d
fix import statments
adelowo Dec 14, 2019
d2a6fd9
Merge branch 'master' of github.com:go-gitea/gitea into enhance_relea…
adelowo Dec 16, 2019
8923c20
Merge branch 'master' into enhance_release_list
zeripath Dec 16, 2019
eb4c10d
Update models/migrations/v113.go
adelowo Dec 23, 2019
19a6d50
Merge branch 'master' of github.com:go-gitea/gitea into enhance_relea…
adelowo Dec 23, 2019
cc55d98
Merge branch 'master' of github.com:go-gitea/gitea into enhance_relea…
adelowo Jul 24, 2020
9359f3d
Update models/migrations/v114.go
adelowo Jul 27, 2020
fb41b03
Update services/release/release.go
adelowo Jul 27, 2020
c0f4a50
Merge branch 'master' into enhance_release_list
adelowo Jul 27, 2020
5978c2d
Merge branch 'master' into enhance_release_list
6543 Aug 14, 2020
717b18a
Merge branch 'master' into enhance_release_list
adelowo Aug 14, 2020
725ac8f
impruve
6543 Aug 14, 2020
9804f94
Merge branch 'master' into enhance_release_list
6543 Sep 2, 2020
78dceb3
Merge branch 'master' into enhance_release_list
6543 Oct 14, 2020
5a3fb34
remove dependency on models package
adelowo Oct 15, 2020
4f61e67
Merge branch 'master' of github.com:go-gitea/gitea into enhance_relea…
adelowo Oct 15, 2020
79c144d
Merge branch 'master' into enhance_release_list
6543 Oct 15, 2020
5688b34
Close the gitrepos in a defer to ensure that they are closed.
zeripath Oct 18, 2020
4158361
Merge branch 'master' into enhance_release_list
6543 Oct 18, 2020
3b1541f
Merge branch 'master' into enhance_release_list
adelowo Oct 18, 2020
d7ff241
gofmt
6543 Oct 20, 2020
19d43d5
Merge branch 'master' into enhance_release_list
6543 Oct 20, 2020
0ad085d
Merge branch 'master' into enhance_release_list
6543 Oct 20, 2020
4d85686
Merge branch 'master' into enhance_release_list
techknowlogick Oct 20, 2020
f90eb0f
Merge branch 'master' into enhance_release_list
6543 Oct 21, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions models/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ var migrations = []Migration{
NewMigration("update Matrix Webhook http method to 'PUT'", updateMatrixWebhookHTTPMethod),
// v145 -> v146
NewMigration("Increase Language field to 50 in LanguageStats", increaseLanguageField),
// v146 -> v147
NewMigration("fix publisher ID for tag releases", fixPublisherIDforTagReleases),
}

// GetCurrentDBVersion returns the current db version
Expand Down
129 changes: 129 additions & 0 deletions models/migrations/v146.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
// Copyright 2020 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.

package migrations

import (
"fmt"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git"

"xorm.io/xorm"
)

func fixPublisherIDforTagReleases(x *xorm.Engine) error {

type Release struct {
ID int64
RepoID int64
Sha1 string
TagName string
PublisherID int64
}

type Repository struct {
ID int64
OwnerID int64
Name string
}

type User struct {
ID int64
Name string
Email string
}

const batchSize = 100
sess := x.NewSession()
defer sess.Close()

if err := sess.Begin(); err != nil {
return err
}

var (
gitRepoCache = make(map[int64]*git.Repository)
gitRepo *git.Repository
repoCache = make(map[int64]*Repository)
userCache = make(map[int64]*User)
ok bool
err error
)

for start := 0; ; start += batchSize {
releases := make([]*Release, 0, batchSize)

if err := sess.Limit(batchSize, start).Asc("id").Where("is_tag=?", true).Find(&releases); err != nil {
return err
}

if len(releases) == 0 {
break
}

for _, release := range releases {
gitRepo, ok = gitRepoCache[release.RepoID]
if !ok {
repo, ok := repoCache[release.RepoID]
if !ok {
repo = new(Repository)
has, err := sess.ID(release.RepoID).Get(repo)
if err != nil {
return err
} else if !has {
return fmt.Errorf("Repository %d is not exist", release.RepoID)
}

repoCache[release.RepoID] = repo
}

user, ok := userCache[repo.OwnerID]
if !ok {
user = new(User)
has, err := sess.ID(repo.OwnerID).Get(user)
if err != nil {
return err
} else if !has {
return fmt.Errorf("User %d is not exist", repo.OwnerID)
}

userCache[repo.OwnerID] = user
}

gitRepo, err = git.OpenRepository(models.RepoPath(user.Name, repo.Name))
if err != nil {
return err
}
gitRepoCache[release.RepoID] = gitRepo
}

commit, err := gitRepo.GetTagCommit(release.TagName)
if err != nil {
return fmt.Errorf("GetTagCommit: %v", err)
}

u := new(User)
exists, err := sess.Where("email=?", commit.Author.Email).Get(u)
if err != nil {
return err
}

if !exists {
continue
}

release.PublisherID = u.ID
if _, err := sess.ID(release.ID).Cols("publisher_id").Update(release); err != nil {
return err
}
}
}

for i := range gitRepoCache {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

defer close?

gitRepoCache[i].Close()
}

return sess.Commit()
}
1 change: 1 addition & 0 deletions routers/repo/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ func calReleaseNumCommitsBehind(repoCtx *context.Repository, release *models.Rel
func Releases(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("repo.release.releases")
ctx.Data["PageIsReleaseList"] = true
ctx.Data["DefaultBranch"] = ctx.Repo.Repository.DefaultBranch

writeAccess := ctx.Repo.CanWrite(models.UnitTypeReleases)
ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived
Expand Down
6 changes: 6 additions & 0 deletions services/release/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error {
if err != nil {
return fmt.Errorf("CommitsCount: %v", err)
}

u, err := models.GetUserByEmail(commit.Author.Email)
adelowo marked this conversation as resolved.
Show resolved Hide resolved
if err == nil {
rel.PublisherID = u.ID
}

} else {
rel.CreatedUnix = timeutil.TimeStampNow()
}
Expand Down
9 changes: 9 additions & 0 deletions templates/repo/release/list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@
<h4>
<a href="{{$.RepoLink}}/src/tag/{{.TagName | EscapePound}}" rel="nofollow"><i class="tag icon"></i> {{.TagName}}</a>
</h4>
<p class="text grey">
{{ if gt .Publisher.ID 0 }}
<span class="author">
<img class="img-10" src="{{.Publisher.RelAvatarLink}}">
<a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a>
</span>
{{ end }}
<span class="ahead"><a href="{{$.RepoLink}}/compare/{{.TagName | EscapePound}}...{{.Target}}">{{$.i18n.Tr "repo.release.ahead.commits" .NumCommitsBehind | Str2html}}</a> {{$.i18n.Tr "repo.release.ahead.target" $.DefaultBranch}}</span>
</p>
<div class="download">
{{if $.Permission.CanRead $.UnitTypeCode}}
<a href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow"><i class="code icon"></i> {{ShortSha .Sha1}}</a>
Expand Down