* remove push_update * move models.PushUpdate to repofiles.PushUpdatetags/v1.21.12.1
| @@ -263,10 +263,6 @@ func pushUpdate(opts PushUpdateOptions) (repo *Repository, err error) { | |||||
| commits = ListToPushCommits(l) | commits = ListToPushCommits(l) | ||||
| } | } | ||||
| if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch { | |||||
| UpdateRepoIndexer(repo) | |||||
| } | |||||
| if err := CommitRepoAction(CommitRepoActionOptions{ | if err := CommitRepoAction(CommitRepoActionOptions{ | ||||
| PusherName: opts.PusherName, | PusherName: opts.PusherName, | ||||
| RepoOwnerID: owner.ID, | RepoOwnerID: owner.ID, | ||||
| @@ -183,7 +183,8 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo | |||||
| if err = repo.GetOwner(); err != nil { | if err = repo.GetOwner(); err != nil { | ||||
| return nil, fmt.Errorf("GetOwner: %v", err) | return nil, fmt.Errorf("GetOwner: %v", err) | ||||
| } | } | ||||
| err = models.PushUpdate( | |||||
| err = PushUpdate( | |||||
| repo, | |||||
| opts.NewBranch, | opts.NewBranch, | ||||
| models.PushUpdateOptions{ | models.PushUpdateOptions{ | ||||
| PusherID: doer.ID, | PusherID: doer.ID, | ||||
| @@ -199,8 +200,6 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo | |||||
| return nil, fmt.Errorf("PushUpdate: %v", err) | return nil, fmt.Errorf("PushUpdate: %v", err) | ||||
| } | } | ||||
| // FIXME: Should we UpdateRepoIndexer(repo) here? | |||||
| file, err := GetFileResponseFromCommit(repo, commit, opts.NewBranch, treePath) | file, err := GetFileResponseFromCommit(repo, commit, opts.NewBranch, treePath) | ||||
| if err != nil { | if err != nil { | ||||
| return nil, err | return nil, err | ||||
| @@ -394,7 +394,8 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up | |||||
| if err = repo.GetOwner(); err != nil { | if err = repo.GetOwner(); err != nil { | ||||
| return nil, fmt.Errorf("GetOwner: %v", err) | return nil, fmt.Errorf("GetOwner: %v", err) | ||||
| } | } | ||||
| err = models.PushUpdate( | |||||
| err = PushUpdate( | |||||
| repo, | |||||
| opts.NewBranch, | opts.NewBranch, | ||||
| models.PushUpdateOptions{ | models.PushUpdateOptions{ | ||||
| PusherID: doer.ID, | PusherID: doer.ID, | ||||
| @@ -409,7 +410,6 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up | |||||
| if err != nil { | if err != nil { | ||||
| return nil, fmt.Errorf("PushUpdate: %v", err) | return nil, fmt.Errorf("PushUpdate: %v", err) | ||||
| } | } | ||||
| models.UpdateRepoIndexer(repo) | |||||
| commit, err = t.GetCommit(commitHash) | commit, err = t.GetCommit(commitHash) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -422,3 +422,17 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up | |||||
| } | } | ||||
| return file, nil | return file, nil | ||||
| } | } | ||||
| // PushUpdate must be called for any push actions in order to | |||||
| // generates necessary push action history feeds and other operations | |||||
| func PushUpdate(repo *models.Repository, branch string, opts models.PushUpdateOptions) error { | |||||
| err := models.PushUpdate(branch, opts) | |||||
| if err != nil { | |||||
| return fmt.Errorf("PushUpdate: %v", err) | |||||
| } | |||||
| if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch { | |||||
| models.UpdateRepoIndexer(repo) | |||||
| } | |||||
| return nil | |||||
| } | |||||
| @@ -188,7 +188,8 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep | |||||
| if err = repo.GetOwner(); err != nil { | if err = repo.GetOwner(); err != nil { | ||||
| return fmt.Errorf("GetOwner: %v", err) | return fmt.Errorf("GetOwner: %v", err) | ||||
| } | } | ||||
| err = models.PushUpdate( | |||||
| err = PushUpdate( | |||||
| repo, | |||||
| opts.NewBranch, | opts.NewBranch, | ||||
| models.PushUpdateOptions{ | models.PushUpdateOptions{ | ||||
| PusherID: doer.ID, | PusherID: doer.ID, | ||||
| @@ -203,7 +204,6 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep | |||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("PushUpdate: %v", err) | return fmt.Errorf("PushUpdate: %v", err) | ||||
| } | } | ||||
| // FIXME: Should we models.UpdateRepoIndexer(repo) here? | |||||
| return models.DeleteUploads(uploads...) | return models.DeleteUploads(uploads...) | ||||
| } | } | ||||
| @@ -15,6 +15,7 @@ import ( | |||||
| "code.gitea.io/gitea/modules/git" | "code.gitea.io/gitea/modules/git" | ||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/private" | "code.gitea.io/gitea/modules/private" | ||||
| "code.gitea.io/gitea/modules/repofiles" | |||||
| "code.gitea.io/gitea/modules/util" | "code.gitea.io/gitea/modules/util" | ||||
| macaron "gopkg.in/macaron.v1" | macaron "gopkg.in/macaron.v1" | ||||
| @@ -117,7 +118,15 @@ func HookPostReceive(ctx *macaron.Context) { | |||||
| // or other less-standard refs spaces are ignored since there | // or other less-standard refs spaces are ignored since there | ||||
| // may be a very large number of them). | // may be a very large number of them). | ||||
| if strings.HasPrefix(refFullName, git.BranchPrefix) || strings.HasPrefix(refFullName, git.TagPrefix) { | if strings.HasPrefix(refFullName, git.BranchPrefix) || strings.HasPrefix(refFullName, git.TagPrefix) { | ||||
| if err := models.PushUpdate(branch, models.PushUpdateOptions{ | |||||
| repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName) | |||||
| if err != nil { | |||||
| log.Error("Failed to get repository: %s/%s Error: %v", ownerName, repoName, err) | |||||
| ctx.JSON(http.StatusInternalServerError, map[string]interface{}{ | |||||
| "err": fmt.Sprintf("Failed to get repository: %s/%s Error: %v", ownerName, repoName, err), | |||||
| }) | |||||
| return | |||||
| } | |||||
| if err := repofiles.PushUpdate(repo, branch, models.PushUpdateOptions{ | |||||
| RefFullName: refFullName, | RefFullName: refFullName, | ||||
| OldCommitID: oldCommitID, | OldCommitID: oldCommitID, | ||||
| NewCommitID: newCommitID, | NewCommitID: newCommitID, | ||||
| @@ -0,0 +1,56 @@ | |||||
| // Copyright 2017 The Gitea Authors. All rights reserved. | |||||
| // Use of this source code is governed by a MIT-style | |||||
| // license that can be found in the LICENSE file. | |||||
| package private | |||||
| import ( | |||||
| "encoding/json" | |||||
| "strings" | |||||
| "code.gitea.io/gitea/models" | |||||
| "code.gitea.io/gitea/modules/git" | |||||
| "code.gitea.io/gitea/modules/log" | |||||
| "code.gitea.io/gitea/modules/repofiles" | |||||
| macaron "gopkg.in/macaron.v1" | |||||
| ) | |||||
| // PushUpdate update public key updates | |||||
| func PushUpdate(ctx *macaron.Context) { | |||||
| var opt models.PushUpdateOptions | |||||
| if err := json.NewDecoder(ctx.Req.Request.Body).Decode(&opt); err != nil { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| return | |||||
| } | |||||
| branch := strings.TrimPrefix(opt.RefFullName, git.BranchPrefix) | |||||
| if len(branch) == 0 || opt.PusherID <= 0 { | |||||
| ctx.Error(404) | |||||
| log.Trace("PushUpdate: branch or secret is empty, or pusher ID is not valid") | |||||
| return | |||||
| } | |||||
| repo, err := models.GetRepositoryByOwnerAndName(opt.RepoUserName, opt.RepoName) | |||||
| if err != nil { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| return | |||||
| } | |||||
| err = repofiles.PushUpdate(repo, branch, opt) | |||||
| if err != nil { | |||||
| if models.IsErrUserNotExist(err) { | |||||
| ctx.Error(404) | |||||
| } else { | |||||
| ctx.JSON(500, map[string]interface{}{ | |||||
| "err": err.Error(), | |||||
| }) | |||||
| } | |||||
| return | |||||
| } | |||||
| ctx.Status(202) | |||||
| } | |||||
| @@ -131,15 +131,18 @@ func deleteBranch(ctx *context.Context, branchName string) error { | |||||
| } | } | ||||
| // Don't return error below this | // Don't return error below this | ||||
| if err := models.PushUpdate(branchName, models.PushUpdateOptions{ | |||||
| RefFullName: git.BranchPrefix + branchName, | |||||
| OldCommitID: commit.ID.String(), | |||||
| NewCommitID: git.EmptySHA, | |||||
| PusherID: ctx.User.ID, | |||||
| PusherName: ctx.User.Name, | |||||
| RepoUserName: ctx.Repo.Owner.Name, | |||||
| RepoName: ctx.Repo.Repository.Name, | |||||
| }); err != nil { | |||||
| if err := repofiles.PushUpdate( | |||||
| ctx.Repo.Repository, | |||||
| branchName, | |||||
| models.PushUpdateOptions{ | |||||
| RefFullName: git.BranchPrefix + branchName, | |||||
| OldCommitID: commit.ID.String(), | |||||
| NewCommitID: git.EmptySHA, | |||||
| PusherID: ctx.User.ID, | |||||
| PusherName: ctx.User.Name, | |||||
| RepoUserName: ctx.Repo.Owner.Name, | |||||
| RepoName: ctx.Repo.Repository.Name, | |||||
| }); err != nil { | |||||
| log.Error("Update: %v", err) | log.Error("Update: %v", err) | ||||
| } | } | ||||