diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-07-24 15:13:26 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-24 15:13:26 +0800 |
commit | 2c5c458dd70a0651b137d1af62fb50de5af4e9af (patch) | |
tree | 0bf59421813c65a3f03ec661f1532c74e84fbe61 /models/update.go | |
parent | c236ba35ca11d8f40fdd1ded504f7fe31731176e (diff) | |
download | gitea-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.go | 119 |
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 -} |