diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2019-06-10 19:35:13 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-10 19:35:13 +0800 |
commit | d93e6232e829a1ade1f9540a701061967aa7d61d (patch) | |
tree | dc55b077a6bcf70e85b7032e66da88bc88594e54 /routers/private | |
parent | b1be6fd31f6f9f1512de16cd93d30775319b3c75 (diff) | |
download | gitea-d93e6232e829a1ade1f9540a701061967aa7d61d.tar.gz gitea-d93e6232e829a1ade1f9540a701061967aa7d61d.zip |
Move PushUpdate dependency from models to repofiles (#6763)
* remove push_update
* move models.PushUpdate to repofiles.PushUpdate
Diffstat (limited to 'routers/private')
-rw-r--r-- | routers/private/hook.go | 11 | ||||
-rw-r--r-- | routers/private/push_update.go | 56 |
2 files changed, 66 insertions, 1 deletions
diff --git a/routers/private/hook.go b/routers/private/hook.go index 700c8bf332..a5985f161e 100644 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -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 index 0000000000..733490ce1c --- /dev/null +++ b/routers/private/push_update.go @@ -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) +} |