]> source.dussan.org Git - gitea.git/commitdiff
Move PushUpdate dependency from models to repofiles (#6763)
authorLunny Xiao <xiaolunwen@gmail.com>
Mon, 10 Jun 2019 11:35:13 +0000 (19:35 +0800)
committerGitHub <noreply@github.com>
Mon, 10 Jun 2019 11:35:13 +0000 (19:35 +0800)
* remove push_update

* move models.PushUpdate to repofiles.PushUpdate

models/update.go
modules/repofiles/delete.go
modules/repofiles/update.go
modules/repofiles/upload.go
routers/private/hook.go
routers/private/push_update.go [new file with mode: 0644]
routers/repo/branch.go

index 1492d6c0d351d9b2333c83a262e7b58161882e30..0883cb0e0116fa30be2554c6d74139ed1e80ee0c 100644 (file)
@@ -263,10 +263,6 @@ func pushUpdate(opts PushUpdateOptions) (repo *Repository, err error) {
                commits = ListToPushCommits(l)
        }
 
-       if opts.RefFullName == git.BranchPrefix+repo.DefaultBranch {
-               UpdateRepoIndexer(repo)
-       }
-
        if err := CommitRepoAction(CommitRepoActionOptions{
                PusherName:  opts.PusherName,
                RepoOwnerID: owner.ID,
index ccf90f43b3071ea266abea4b6e266edc21e415f6..09a4dbb44c9b18fdb21357fd0547c66816be09a1 100644 (file)
@@ -183,7 +183,8 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo
        if err = repo.GetOwner(); err != nil {
                return nil, fmt.Errorf("GetOwner: %v", err)
        }
-       err = models.PushUpdate(
+       err = PushUpdate(
+               repo,
                opts.NewBranch,
                models.PushUpdateOptions{
                        PusherID:     doer.ID,
@@ -199,8 +200,6 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo
                return nil, fmt.Errorf("PushUpdate: %v", err)
        }
 
-       // FIXME: Should we UpdateRepoIndexer(repo) here?
-
        file, err := GetFileResponseFromCommit(repo, commit, opts.NewBranch, treePath)
        if err != nil {
                return nil, err
index 66e3f2babced3a99b9cc89730e9f7b0cf5f7a55f..569c89ac51d51d4eb429ff0b5a09ed858d1e62c4 100644 (file)
@@ -394,7 +394,8 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
        if err = repo.GetOwner(); err != nil {
                return nil, fmt.Errorf("GetOwner: %v", err)
        }
-       err = models.PushUpdate(
+       err = PushUpdate(
+               repo,
                opts.NewBranch,
                models.PushUpdateOptions{
                        PusherID:     doer.ID,
@@ -409,7 +410,6 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
        if err != nil {
                return nil, fmt.Errorf("PushUpdate: %v", err)
        }
-       models.UpdateRepoIndexer(repo)
 
        commit, err = t.GetCommit(commitHash)
        if err != nil {
@@ -422,3 +422,17 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up
        }
        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
+}
index ed6a9438c70f8fe30c4dbaf81f28d16f158983d1..5f428c3139a43c8f819a48b3d00e57c185a3d7aa 100644 (file)
@@ -188,7 +188,8 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
        if err = repo.GetOwner(); err != nil {
                return fmt.Errorf("GetOwner: %v", err)
        }
-       err = models.PushUpdate(
+       err = PushUpdate(
+               repo,
                opts.NewBranch,
                models.PushUpdateOptions{
                        PusherID:     doer.ID,
@@ -203,7 +204,6 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep
        if err != nil {
                return fmt.Errorf("PushUpdate: %v", err)
        }
-       // FIXME: Should we models.UpdateRepoIndexer(repo) here?
 
        return models.DeleteUploads(uploads...)
 }
index 700c8bf3327908e57aa13df26a541995dcd9afc4..a5985f161e7191569cbde025c8e42fd8d9a729bb 100644 (file)
@@ -15,6 +15,7 @@ import (
        "code.gitea.io/gitea/modules/git"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/private"
+       "code.gitea.io/gitea/modules/repofiles"
        "code.gitea.io/gitea/modules/util"
 
        macaron "gopkg.in/macaron.v1"
@@ -117,7 +118,15 @@ func HookPostReceive(ctx *macaron.Context) {
        // or other less-standard refs spaces are ignored since there
        // may be a very large number of them).
        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,
                        OldCommitID:  oldCommitID,
                        NewCommitID:  newCommitID,
diff --git a/routers/private/push_update.go b/routers/private/push_update.go
new file mode 100644 (file)
index 0000000..733490c
--- /dev/null
@@ -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)
+}
index ae87aa5b3a09d47db2421a20afcb150e8ff50119..05d64fb4c8d0edfb435ed67d946c581fe2e8f6d2 100644 (file)
@@ -131,15 +131,18 @@ func deleteBranch(ctx *context.Context, branchName string) error {
        }
 
        // 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)
        }