Skip to content

Commit d93e623

Browse files
authored
Move PushUpdate dependency from models to repofiles (go-gitea#6763)
* remove push_update * move models.PushUpdate to repofiles.PushUpdate
1 parent b1be6fd commit d93e623

File tree

7 files changed

+98
-21
lines changed

7 files changed

+98
-21
lines changed

models/update.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,6 @@ func pushUpdate(opts PushUpdateOptions) (repo *Repository, err error) {
263263
commits = ListToPushCommits(l)
264264
}
265265

266-
if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch {
267-
UpdateRepoIndexer(repo)
268-
}
269-
270266
if err := CommitRepoAction(CommitRepoActionOptions{
271267
PusherName: opts.PusherName,
272268
RepoOwnerID: owner.ID,

modules/repofiles/delete.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo
183183
if err = repo.GetOwner(); err != nil {
184184
return nil, fmt.Errorf("GetOwner: %v", err)
185185
}
186-
err = models.PushUpdate(
186+
err = PushUpdate(
187+
repo,
187188
opts.NewBranch,
188189
models.PushUpdateOptions{
189190
PusherID: doer.ID,
@@ -199,8 +200,6 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo
199200
return nil, fmt.Errorf("PushUpdate: %v", err)
200201
}
201202

202-
// FIXME: Should we UpdateRepoIndexer(repo) here?
203-
204203
file, err := GetFileResponseFromCommit(repo, commit, opts.NewBranch, treePath)
205204
if err != nil {
206205
return nil, err

modules/repofiles/update.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,8 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
394394
if err = repo.GetOwner(); err != nil {
395395
return nil, fmt.Errorf("GetOwner: %v", err)
396396
}
397-
err = models.PushUpdate(
397+
err = PushUpdate(
398+
repo,
398399
opts.NewBranch,
399400
models.PushUpdateOptions{
400401
PusherID: doer.ID,
@@ -409,7 +410,6 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
409410
if err != nil {
410411
return nil, fmt.Errorf("PushUpdate: %v", err)
411412
}
412-
models.UpdateRepoIndexer(repo)
413413

414414
commit, err = t.GetCommit(commitHash)
415415
if err != nil {
@@ -422,3 +422,17 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
422422
}
423423
return file, nil
424424
}
425+
426+
// PushUpdate must be called for any push actions in order to
427+
// generates necessary push action history feeds and other operations
428+
func PushUpdate(repo *models.Repository, branch string, opts models.PushUpdateOptions) error {
429+
err := models.PushUpdate(branch, opts)
430+
if err != nil {
431+
return fmt.Errorf("PushUpdate: %v", err)
432+
}
433+
434+
if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch {
435+
models.UpdateRepoIndexer(repo)
436+
}
437+
return nil
438+
}

modules/repofiles/upload.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
188188
if err = repo.GetOwner(); err != nil {
189189
return fmt.Errorf("GetOwner: %v", err)
190190
}
191-
err = models.PushUpdate(
191+
err = PushUpdate(
192+
repo,
192193
opts.NewBranch,
193194
models.PushUpdateOptions{
194195
PusherID: doer.ID,
@@ -203,7 +204,6 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
203204
if err != nil {
204205
return fmt.Errorf("PushUpdate: %v", err)
205206
}
206-
// FIXME: Should we models.UpdateRepoIndexer(repo) here?
207207

208208
return models.DeleteUploads(uploads...)
209209
}

routers/private/hook.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"code.gitea.io/gitea/modules/git"
1616
"code.gitea.io/gitea/modules/log"
1717
"code.gitea.io/gitea/modules/private"
18+
"code.gitea.io/gitea/modules/repofiles"
1819
"code.gitea.io/gitea/modules/util"
1920

2021
macaron "gopkg.in/macaron.v1"
@@ -117,7 +118,15 @@ func HookPostReceive(ctx *macaron.Context) {
117118
// or other less-standard refs spaces are ignored since there
118119
// may be a very large number of them).
119120
if strings.HasPrefix(refFullName, git.BranchPrefix) || strings.HasPrefix(refFullName, git.TagPrefix) {
120-
if err := models.PushUpdate(branch, models.PushUpdateOptions{
121+
repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName)
122+
if err != nil {
123+
log.Error("Failed to get repository: %s/%s Error: %v", ownerName, repoName, err)
124+
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
125+
"err": fmt.Sprintf("Failed to get repository: %s/%s Error: %v", ownerName, repoName, err),
126+
})
127+
return
128+
}
129+
if err := repofiles.PushUpdate(repo, branch, models.PushUpdateOptions{
121130
RefFullName: refFullName,
122131
OldCommitID: oldCommitID,
123132
NewCommitID: newCommitID,

routers/private/push_update.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Copyright 2017 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 private
6+
7+
import (
8+
"encoding/json"
9+
"strings"
10+
11+
"code.gitea.io/gitea/models"
12+
"code.gitea.io/gitea/modules/git"
13+
"code.gitea.io/gitea/modules/log"
14+
"code.gitea.io/gitea/modules/repofiles"
15+
16+
macaron "gopkg.in/macaron.v1"
17+
)
18+
19+
// PushUpdate update public key updates
20+
func PushUpdate(ctx *macaron.Context) {
21+
var opt models.PushUpdateOptions
22+
if err := json.NewDecoder(ctx.Req.Request.Body).Decode(&opt); err != nil {
23+
ctx.JSON(500, map[string]interface{}{
24+
"err": err.Error(),
25+
})
26+
return
27+
}
28+
29+
branch := strings.TrimPrefix(opt.RefFullName, git.BranchPrefix)
30+
if len(branch) == 0 || opt.PusherID <= 0 {
31+
ctx.Error(404)
32+
log.Trace("PushUpdate: branch or secret is empty, or pusher ID is not valid")
33+
return
34+
}
35+
36+
repo, err := models.GetRepositoryByOwnerAndName(opt.RepoUserName, opt.RepoName)
37+
if err != nil {
38+
ctx.JSON(500, map[string]interface{}{
39+
"err": err.Error(),
40+
})
41+
return
42+
}
43+
44+
err = repofiles.PushUpdate(repo, branch, opt)
45+
if err != nil {
46+
if models.IsErrUserNotExist(err) {
47+
ctx.Error(404)
48+
} else {
49+
ctx.JSON(500, map[string]interface{}{
50+
"err": err.Error(),
51+
})
52+
}
53+
return
54+
}
55+
ctx.Status(202)
56+
}

routers/repo/branch.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,18 @@ func deleteBranch(ctx *context.Context, branchName string) error {
131131
}
132132

133133
// Don't return error below this
134-
if err := models.PushUpdate(branchName, models.PushUpdateOptions{
135-
RefFullName: git.BranchPrefix + branchName,
136-
OldCommitID: commit.ID.String(),
137-
NewCommitID: git.EmptySHA,
138-
PusherID: ctx.User.ID,
139-
PusherName: ctx.User.Name,
140-
RepoUserName: ctx.Repo.Owner.Name,
141-
RepoName: ctx.Repo.Repository.Name,
142-
}); err != nil {
134+
if err := repofiles.PushUpdate(
135+
ctx.Repo.Repository,
136+
branchName,
137+
models.PushUpdateOptions{
138+
RefFullName: git.BranchPrefix + branchName,
139+
OldCommitID: commit.ID.String(),
140+
NewCommitID: git.EmptySHA,
141+
PusherID: ctx.User.ID,
142+
PusherName: ctx.User.Name,
143+
RepoUserName: ctx.Repo.Owner.Name,
144+
RepoName: ctx.Repo.Repository.Name,
145+
}); err != nil {
143146
log.Error("Update: %v", err)
144147
}
145148

0 commit comments

Comments
 (0)