Skip to content

Commit 4334fe7

Browse files
authored
update git vendor to fix wrong release commit id and add migrations (#6224)
* update git vendor to fix wrong release commit id and add migrations * fix count * fix migration release * fix tests
1 parent 2315019 commit 4334fe7

File tree

9 files changed

+133
-15
lines changed

9 files changed

+133
-15
lines changed

Gopkg.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/migrations/migrations.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ var migrations = []Migration{
217217
NewMigration("add is locked to issues", addIsLockedToIssues),
218218
// v81 -> v82
219219
NewMigration("update U2F counter type", changeU2FCounterType),
220+
// v82 -> v83
221+
NewMigration("hot fix for wrong release sha1 on release table", fixReleaseSha1OnReleaseTable),
220222
}
221223

222224
// Migrate database to current version

models/migrations/v82.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// Copyright 2019 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package migrations
6+
7+
import (
8+
"code.gitea.io/git"
9+
"code.gitea.io/gitea/models"
10+
"github.com/go-xorm/xorm"
11+
)
12+
13+
func fixReleaseSha1OnReleaseTable(x *xorm.Engine) error {
14+
type Release struct {
15+
ID int64
16+
RepoID int64
17+
Sha1 string
18+
TagName string
19+
}
20+
21+
// Update release sha1
22+
const batchSize = 100
23+
sess := x.NewSession()
24+
defer sess.Close()
25+
26+
var (
27+
err error
28+
count int
29+
gitRepoCache = make(map[int64]*git.Repository)
30+
repoCache = make(map[int64]*models.Repository)
31+
)
32+
33+
if err = sess.Begin(); err != nil {
34+
return err
35+
}
36+
37+
for start := 0; ; start += batchSize {
38+
releases := make([]*Release, 0, batchSize)
39+
if err = sess.Limit(batchSize, start).Asc("id").Where("is_tag=?", false).Find(&releases); err != nil {
40+
return err
41+
}
42+
if len(releases) == 0 {
43+
break
44+
}
45+
46+
for _, release := range releases {
47+
gitRepo, ok := gitRepoCache[release.RepoID]
48+
if !ok {
49+
repo, ok := repoCache[release.RepoID]
50+
if !ok {
51+
repo, err = models.GetRepositoryByID(release.RepoID)
52+
if err != nil {
53+
return err
54+
}
55+
repoCache[release.RepoID] = repo
56+
}
57+
58+
gitRepo, err = git.OpenRepository(repo.RepoPath())
59+
if err != nil {
60+
return err
61+
}
62+
gitRepoCache[release.RepoID] = gitRepo
63+
}
64+
65+
release.Sha1, err = gitRepo.GetTagCommitID(release.TagName)
66+
if err != nil {
67+
return err
68+
}
69+
70+
if _, err = sess.ID(release.ID).Cols("sha1").Update(release); err != nil {
71+
return err
72+
}
73+
74+
count++
75+
if count >= 1000 {
76+
if err = sess.Commit(); err != nil {
77+
return err
78+
}
79+
if err = sess.Begin(); err != nil {
80+
return err
81+
}
82+
count = 0
83+
}
84+
}
85+
}
86+
return sess.Commit()
87+
}

models/repo_branch.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ func (repo *Repository) CheckBranchName(name string) error {
110110
return err
111111
}
112112

113-
if _, err := gitRepo.GetTag(name); err == nil {
114-
return ErrTagAlreadyExists{name}
115-
}
116-
117113
branches, err := repo.GetBranches()
118114
if err != nil {
119115
return err
@@ -127,6 +123,11 @@ func (repo *Repository) CheckBranchName(name string) error {
127123
return ErrBranchNameConflict{branch.Name}
128124
}
129125
}
126+
127+
if _, err := gitRepo.GetTag(name); err == nil {
128+
return ErrTagAlreadyExists{name}
129+
}
130+
130131
return nil
131132
}
132133

routers/repo/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func renderDirectory(ctx *context.Context, treeLink string) {
4949
}
5050
entries.CustomSort(base.NaturalSortLess)
5151

52-
ctx.Data["Files"], err = entries.GetCommitsInfo(ctx.Repo.Commit, ctx.Repo.TreePath)
52+
ctx.Data["Files"], err = entries.GetCommitsInfo(ctx.Repo.Commit, ctx.Repo.TreePath, nil)
5353
if err != nil {
5454
ctx.ServerError("GetCommitsInfo", err)
5555
return

vendor/code.gitea.io/git/cache.go

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/code.gitea.io/git/commit_info.go

Lines changed: 15 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/code.gitea.io/git/repo_commit.go

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/code.gitea.io/git/repo_tag.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)