summaryrefslogtreecommitdiffstats
path: root/models/update.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-07-24 15:13:26 +0800
committerGitHub <noreply@github.com>2019-07-24 15:13:26 +0800
commit2c5c458dd70a0651b137d1af62fb50de5af4e9af (patch)
tree0bf59421813c65a3f03ec661f1532c74e84fbe61 /models/update.go
parentc236ba35ca11d8f40fdd1ded504f7fe31731176e (diff)
downloadgitea-2c5c458dd70a0651b137d1af62fb50de5af4e9af.tar.gz
gitea-2c5c458dd70a0651b137d1af62fb50de5af4e9af.zip
Move models.PushUpdate to repofiles.PushUpdate (#7485)
* move models.PushUpdate to repofiles.PushUpdate * remove duplicated code to load repo
Diffstat (limited to 'models/update.go')
-rw-r--r--models/update.go119
1 files changed, 4 insertions, 115 deletions
diff --git a/models/update.go b/models/update.go
index 411f7d5be1..a19df70b3b 100644
--- a/models/update.go
+++ b/models/update.go
@@ -10,9 +10,7 @@ import (
"strings"
"time"
- "code.gitea.io/gitea/modules/cache"
"code.gitea.io/gitea/modules/git"
- "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/util"
)
@@ -64,26 +62,8 @@ type PushUpdateOptions struct {
NewCommitID string
}
-// PushUpdate must be called for any push actions in order to
-// generates necessary push action history feeds.
-func PushUpdate(branch string, opt PushUpdateOptions) error {
- repo, err := pushUpdate(opt)
- if err != nil {
- return err
- }
-
- pusher, err := GetUserByID(opt.PusherID)
- if err != nil {
- return err
- }
-
- log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
-
- go AddTestPullRequestTask(pusher, repo.ID, branch, true)
- return nil
-}
-
-func pushUpdateDeleteTag(repo *Repository, tagName string) error {
+// PushUpdateDeleteTag must be called for any push actions to delete tag
+func PushUpdateDeleteTag(repo *Repository, tagName string) error {
rel, err := GetRelease(repo.ID, tagName)
if err != nil {
if IsErrReleaseNotExist(err) {
@@ -107,7 +87,8 @@ func pushUpdateDeleteTag(repo *Repository, tagName string) error {
return nil
}
-func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) error {
+// PushUpdateAddTag must be called for any push actions to add tag
+func PushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string) error {
rel, err := GetRelease(repo.ID, tagName)
if err != nil && !IsErrReleaseNotExist(err) {
return fmt.Errorf("GetRelease: %v", err)
@@ -182,95 +163,3 @@ func pushUpdateAddTag(repo *Repository, gitRepo *git.Repository, tagName string)
}
return nil
}
-
-func pushUpdate(opts PushUpdateOptions) (repo *Repository, err error) {
- isNewRef := opts.OldCommitID == git.EmptySHA
- isDelRef := opts.NewCommitID == git.EmptySHA
- if isNewRef && isDelRef {
- return nil, fmt.Errorf("Old and new revisions are both %s", git.EmptySHA)
- }
-
- repoPath := RepoPath(opts.RepoUserName, opts.RepoName)
-
- _, err = git.NewCommand("update-server-info").RunInDir(repoPath)
- if err != nil {
- return nil, fmt.Errorf("Failed to call 'git update-server-info': %v", err)
- }
-
- owner, err := GetUserByName(opts.RepoUserName)
- if err != nil {
- return nil, fmt.Errorf("GetUserByName: %v", err)
- }
-
- repo, err = GetRepositoryByName(owner.ID, opts.RepoName)
- if err != nil {
- return nil, fmt.Errorf("GetRepositoryByName: %v", err)
- }
-
- gitRepo, err := git.OpenRepository(repoPath)
- if err != nil {
- return nil, fmt.Errorf("OpenRepository: %v", err)
- }
-
- if err = repo.UpdateSize(); err != nil {
- log.Error("Failed to update size for repository: %v", err)
- }
-
- var commits = &PushCommits{}
- if strings.HasPrefix(opts.RefFullName, git.TagPrefix) {
- // If is tag reference
- tagName := opts.RefFullName[len(git.TagPrefix):]
- if isDelRef {
- err = pushUpdateDeleteTag(repo, tagName)
- if err != nil {
- return nil, fmt.Errorf("pushUpdateDeleteTag: %v", err)
- }
- } else {
- // Clear cache for tag commit count
- cache.Remove(repo.GetCommitsCountCacheKey(tagName, true))
- err = pushUpdateAddTag(repo, gitRepo, tagName)
- if err != nil {
- return nil, fmt.Errorf("pushUpdateAddTag: %v", err)
- }
- }
- } else if !isDelRef {
- // If is branch reference
-
- // Clear cache for branch commit count
- cache.Remove(repo.GetCommitsCountCacheKey(opts.RefFullName[len(git.BranchPrefix):], true))
-
- newCommit, err := gitRepo.GetCommit(opts.NewCommitID)
- if err != nil {
- return nil, fmt.Errorf("gitRepo.GetCommit: %v", err)
- }
-
- // Push new branch.
- var l *list.List
- if isNewRef {
- l, err = newCommit.CommitsBeforeLimit(10)
- if err != nil {
- return nil, fmt.Errorf("newCommit.CommitsBeforeLimit: %v", err)
- }
- } else {
- l, err = newCommit.CommitsBeforeUntil(opts.OldCommitID)
- if err != nil {
- return nil, fmt.Errorf("newCommit.CommitsBeforeUntil: %v", err)
- }
- }
-
- commits = ListToPushCommits(l)
- }
-
- if err := CommitRepoAction(CommitRepoActionOptions{
- PusherName: opts.PusherName,
- RepoOwnerID: owner.ID,
- RepoName: repo.Name,
- RefFullName: opts.RefFullName,
- OldCommitID: opts.OldCommitID,
- NewCommitID: opts.NewCommitID,
- Commits: commits,
- }); err != nil {
- return nil, fmt.Errorf("CommitRepoAction: %v", err)
- }
- return repo, nil
-}