Skip to content

Commit 2c5c458

Browse files
authored
Move models.PushUpdate to repofiles.PushUpdate (#7485)
* move models.PushUpdate to repofiles.PushUpdate * remove duplicated code to load repo
1 parent c236ba3 commit 2c5c458

File tree

3 files changed

+94
-120
lines changed

3 files changed

+94
-120
lines changed

models/release.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,8 @@ func SyncReleasesWithTags(repo *Repository, gitRepo *git.Repository) error {
495495
return fmt.Errorf("GetTagCommitID: %v", err)
496496
}
497497
if git.IsErrNotExist(err) || commitID != rel.Sha1 {
498-
if err := pushUpdateDeleteTag(repo, rel.TagName); err != nil {
499-
return fmt.Errorf("pushUpdateDeleteTag: %v", err)
498+
if err := PushUpdateDeleteTag(repo, rel.TagName); err != nil {
499+
return fmt.Errorf("PushUpdateDeleteTag: %v", err)
500500
}
501501
} else {
502502
existingRelTags[strings.ToLower(rel.TagName)] = struct{}{}
@@ -509,7 +509,7 @@ func SyncReleasesWithTags(repo *Repository, gitRepo *git.Repository) error {
509509
}
510510
for _, tagName := range tags {
511511
if _, ok := existingRelTags[strings.ToLower(tagName)]; !ok {
512-
if err := pushUpdateAddTag(repo, gitRepo, tagName); err != nil {
512+
if err := PushUpdateAddTag(repo, gitRepo, tagName); err != nil {
513513
return fmt.Errorf("pushUpdateAddTag: %v", err)
514514
}
515515
}

models/update.go

Lines changed: 4 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ import (
1010
"strings"
1111
"time"
1212

13-
"code.gitea.io/gitea/modules/cache"
1413
"code.gitea.io/gitea/modules/git"
15-
"code.gitea.io/gitea/modules/log"
1614
"code.gitea.io/gitea/modules/util"
1715
)
1816

@@ -64,26 +62,8 @@ type PushUpdateOptions struct {
6462
NewCommitID string
6563
}
6664

67-
// PushUpdate must be called for any push actions in order to
68-
// generates necessary push action history feeds.
69-
func PushUpdate(branch string, opt PushUpdateOptions) error {
70-
repo, err := pushUpdate(opt)
71-
if err != nil {
72-
return err
73-
}
74-
75-
pusher, err := GetUserByID(opt.PusherID)
76-
if err != nil {
77-
return err
78-
}
79-
80-
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
81-
82-
go AddTestPullRequestTask(pusher, repo.ID, branch, true)
83-
return nil
84-
}
85-
86-
func pushUpdateDeleteTag(repo *Repository, tagName string) error {
65+
// PushUpdateDeleteTag must be called for any push actions to delete tag
66+
func PushUpdateDeleteTag(repo *Repository, tagName string) error {
8767
rel, err := GetRelease(repo.ID, tagName)
8868
if err != nil {
8969
if IsErrReleaseNotExist(err) {
@@ -107,7 +87,8 @@ func pushUpdateDeleteTag(repo *Repository, tagName string) error {
10787
return nil
10888
}
10989

110-
func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) error {
90+
// PushUpdateAddTag must be called for any push actions to add tag
91+
func PushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) error {
11192
rel, err := GetRelease(repo.ID, tagName)
11293
if err != nil && !IsErrReleaseNotExist(err) {
11394
return fmt.Errorf("GetRelease: %v", err)
@@ -182,95 +163,3 @@ func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string)
182163
}
183164
return nil
184165
}
185-
186-
func pushUpdate(opts PushUpdateOptions) (repo *Repository, err error) {
187-
isNewRef := opts.OldCommitID == git.EmptySHA
188-
isDelRef := opts.NewCommitID == git.EmptySHA
189-
if isNewRef && isDelRef {
190-
return nil, fmt.Errorf("Old and new revisions are both %s", git.EmptySHA)
191-
}
192-
193-
repoPath := RepoPath(opts.RepoUserName, opts.RepoName)
194-
195-
_, err = git.NewCommand("update-server-info").RunInDir(repoPath)
196-
if err != nil {
197-
return nil, fmt.Errorf("Failed to call 'git update-server-info': %v", err)
198-
}
199-
200-
owner, err := GetUserByName(opts.RepoUserName)
201-
if err != nil {
202-
return nil, fmt.Errorf("GetUserByName: %v", err)
203-
}
204-
205-
repo, err = GetRepositoryByName(owner.ID, opts.RepoName)
206-
if err != nil {
207-
return nil, fmt.Errorf("GetRepositoryByName: %v", err)
208-
}
209-
210-
gitRepo, err := git.OpenRepository(repoPath)
211-
if err != nil {
212-
return nil, fmt.Errorf("OpenRepository: %v", err)
213-
}
214-
215-
if err = repo.UpdateSize(); err != nil {
216-
log.Error("Failed to update size for repository: %v", err)
217-
}
218-
219-
var commits = &PushCommits{}
220-
if strings.HasPrefix(opts.RefFullName, git.TagPrefix) {
221-
// If is tag reference
222-
tagName := opts.RefFullName[len(git.TagPrefix):]
223-
if isDelRef {
224-
err = pushUpdateDeleteTag(repo, tagName)
225-
if err != nil {
226-
return nil, fmt.Errorf("pushUpdateDeleteTag: %v", err)
227-
}
228-
} else {
229-
// Clear cache for tag commit count
230-
cache.Remove(repo.GetCommitsCountCacheKey(tagName, true))
231-
err = pushUpdateAddTag(repo, gitRepo, tagName)
232-
if err != nil {
233-
return nil, fmt.Errorf("pushUpdateAddTag: %v", err)
234-
}
235-
}
236-
} else if !isDelRef {
237-
// If is branch reference
238-
239-
// Clear cache for branch commit count
240-
cache.Remove(repo.GetCommitsCountCacheKey(opts.RefFullName[len(git.BranchPrefix):], true))
241-
242-
newCommit, err := gitRepo.GetCommit(opts.NewCommitID)
243-
if err != nil {
244-
return nil, fmt.Errorf("gitRepo.GetCommit: %v", err)
245-
}
246-
247-
// Push new branch.
248-
var l *list.List
249-
if isNewRef {
250-
l, err = newCommit.CommitsBeforeLimit(10)
251-
if err != nil {
252-
return nil, fmt.Errorf("newCommit.CommitsBeforeLimit: %v", err)
253-
}
254-
} else {
255-
l, err = newCommit.CommitsBeforeUntil(opts.OldCommitID)
256-
if err != nil {
257-
return nil, fmt.Errorf("newCommit.CommitsBeforeUntil: %v", err)
258-
}
259-
}
260-
261-
commits = ListToPushCommits(l)
262-
}
263-
264-
if err := CommitRepoAction(CommitRepoActionOptions{
265-
PusherName: opts.PusherName,
266-
RepoOwnerID: owner.ID,
267-
RepoName: repo.Name,
268-
RefFullName: opts.RefFullName,
269-
OldCommitID: opts.OldCommitID,
270-
NewCommitID: opts.NewCommitID,
271-
Commits: commits,
272-
}); err != nil {
273-
return nil, fmt.Errorf("CommitRepoAction: %v", err)
274-
}
275-
return repo, nil
276-
}

modules/repofiles/update.go

Lines changed: 87 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package repofiles
66

77
import (
88
"bytes"
9+
"container/list"
910
"fmt"
1011
"path"
1112
"strings"
@@ -15,6 +16,7 @@ import (
1516

1617
"code.gitea.io/gitea/models"
1718
"code.gitea.io/gitea/modules/base"
19+
"code.gitea.io/gitea/modules/cache"
1820
"code.gitea.io/gitea/modules/git"
1921
"code.gitea.io/gitea/modules/lfs"
2022
"code.gitea.io/gitea/modules/log"
@@ -428,11 +430,94 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
428430
// PushUpdate must be called for any push actions in order to
429431
// generates necessary push action history feeds and other operations
430432
func PushUpdate(repo *models.Repository, branch string, opts models.PushUpdateOptions) error {
431-
err := models.PushUpdate(branch, opts)
433+
isNewRef := opts.OldCommitID == git.EmptySHA
434+
isDelRef := opts.NewCommitID == git.EmptySHA
435+
if isNewRef && isDelRef {
436+
return fmt.Errorf("Old and new revisions are both %s", git.EmptySHA)
437+
}
438+
439+
repoPath := models.RepoPath(opts.RepoUserName, opts.RepoName)
440+
441+
_, err := git.NewCommand("update-server-info").RunInDir(repoPath)
432442
if err != nil {
433-
return fmt.Errorf("PushUpdate: %v", err)
443+
return fmt.Errorf("Failed to call 'git update-server-info': %v", err)
434444
}
435445

446+
gitRepo, err := git.OpenRepository(repoPath)
447+
if err != nil {
448+
return fmt.Errorf("OpenRepository: %v", err)
449+
}
450+
451+
if err = repo.UpdateSize(); err != nil {
452+
log.Error("Failed to update size for repository: %v", err)
453+
}
454+
455+
var commits = &models.PushCommits{}
456+
if strings.HasPrefix(opts.RefFullName, git.TagPrefix) {
457+
// If is tag reference
458+
tagName := opts.RefFullName[len(git.TagPrefix):]
459+
if isDelRef {
460+
err = models.PushUpdateDeleteTag(repo, tagName)
461+
if err != nil {
462+
return fmt.Errorf("PushUpdateDeleteTag: %v", err)
463+
}
464+
} else {
465+
// Clear cache for tag commit count
466+
cache.Remove(repo.GetCommitsCountCacheKey(tagName, true))
467+
err = models.PushUpdateAddTag(repo, gitRepo, tagName)
468+
if err != nil {
469+
return fmt.Errorf("PushUpdateAddTag: %v", err)
470+
}
471+
}
472+
} else if !isDelRef {
473+
// If is branch reference
474+
475+
// Clear cache for branch commit count
476+
cache.Remove(repo.GetCommitsCountCacheKey(opts.RefFullName[len(git.BranchPrefix):], true))
477+
478+
newCommit, err := gitRepo.GetCommit(opts.NewCommitID)
479+
if err != nil {
480+
return fmt.Errorf("gitRepo.GetCommit: %v", err)
481+
}
482+
483+
// Push new branch.
484+
var l *list.List
485+
if isNewRef {
486+
l, err = newCommit.CommitsBeforeLimit(10)
487+
if err != nil {
488+
return fmt.Errorf("newCommit.CommitsBeforeLimit: %v", err)
489+
}
490+
} else {
491+
l, err = newCommit.CommitsBeforeUntil(opts.OldCommitID)
492+
if err != nil {
493+
return fmt.Errorf("newCommit.CommitsBeforeUntil: %v", err)
494+
}
495+
}
496+
497+
commits = models.ListToPushCommits(l)
498+
}
499+
500+
if err := models.CommitRepoAction(models.CommitRepoActionOptions{
501+
PusherName: opts.PusherName,
502+
RepoOwnerID: repo.OwnerID,
503+
RepoName: repo.Name,
504+
RefFullName: opts.RefFullName,
505+
OldCommitID: opts.OldCommitID,
506+
NewCommitID: opts.NewCommitID,
507+
Commits: commits,
508+
}); err != nil {
509+
return fmt.Errorf("CommitRepoAction: %v", err)
510+
}
511+
512+
pusher, err := models.GetUserByID(opts.PusherID)
513+
if err != nil {
514+
return err
515+
}
516+
517+
log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
518+
519+
go models.AddTestPullRequestTask(pusher, repo.ID, branch, true)
520+
436521
if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch {
437522
models.UpdateRepoIndexer(repo)
438523
}

0 commit comments

Comments
 (0)