Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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 @@ -219,6 +219,8 @@ var migrations = []Migration{
NewMigration("update U2F counter type", changeU2FCounterType),
// v82 -> v83
NewMigration("hot fix for wrong release sha1 on release table", fixReleaseSha1OnReleaseTable),
// v83 - v84
NewMigration("fix publisher ID for tag releases", fixPublisherIDforTagReleases),
}

// Migrate database to current version
Expand Down
125 changes: 125 additions & 0 deletions models/migrations/v83.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
// 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.

package migrations

import (
"fmt"

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

"github.com/go-xorm/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).Update(release); err != nil {
return err
}
}
}

return sess.Commit()
}
6 changes: 6 additions & 0 deletions models/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,12 @@ func createTag(gitRepo *git.Repository, rel *Release) error {
if err != nil {
return fmt.Errorf("CommitsCount: %v", err)
}

u, err := GetUserByEmail(commit.Author.Email)
if err == nil {
rel.PublisherID = u.ID
}

} else {
rel.CreatedUnix = util.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">{{$.i18n.Tr "repo.release.ahead" .NumCommitsBehind $.Repository.DefaultBranch | Str2html}}</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