mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Drop db operations from hook commands (#1514)
* move all database operations from hook command to web command and instead of internal routes * bug fixed * adjust the import path sequences * remove unused return value on hookSetup
This commit is contained in:
		
							
								
								
									
										30
									
								
								routers/private/branch.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								routers/private/branch.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
// 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 (
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
 | 
			
		||||
	macaron "gopkg.in/macaron.v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetProtectedBranchBy get protected branch information
 | 
			
		||||
func GetProtectedBranchBy(ctx *macaron.Context) {
 | 
			
		||||
	repoID := ctx.ParamsInt64(":id")
 | 
			
		||||
	branchName := ctx.Params(":branch")
 | 
			
		||||
	protectBranch, err := models.GetProtectedBranchBy(repoID, branchName)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
			"err": err.Error(),
 | 
			
		||||
		})
 | 
			
		||||
		return
 | 
			
		||||
	} else if protectBranch != nil {
 | 
			
		||||
		ctx.JSON(200, protectBranch)
 | 
			
		||||
	} else {
 | 
			
		||||
		ctx.JSON(200, &models.ProtectedBranch{
 | 
			
		||||
			CanPush: true,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -10,6 +10,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
 | 
			
		||||
	macaron "gopkg.in/macaron.v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -40,5 +41,7 @@ func UpdatePublicKey(ctx *macaron.Context) {
 | 
			
		||||
func RegisterRoutes(m *macaron.Macaron) {
 | 
			
		||||
	m.Group("/", func() {
 | 
			
		||||
		m.Post("/ssh/:id/update", UpdatePublicKey)
 | 
			
		||||
		m.Post("/push/update", PushUpdate)
 | 
			
		||||
		m.Get("/branch/:id/:branch", GetProtectedBranchBy)
 | 
			
		||||
	}, CheckInternalToken)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								routers/private/push_update.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								routers/private/push_update.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
// 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/git"
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
 | 
			
		||||
	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.PushUpdate(opt)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
			"err": err.Error(),
 | 
			
		||||
		})
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pusher, err := models.GetUserByID(opt.PusherID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if models.IsErrUserNotExist(err) {
 | 
			
		||||
			ctx.Error(404)
 | 
			
		||||
		} else {
 | 
			
		||||
			ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
				"err": err.Error(),
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name)
 | 
			
		||||
 | 
			
		||||
	go models.HookQueue.Add(repo.ID)
 | 
			
		||||
	go models.AddTestPullRequestTask(pusher, repo.ID, branch, true)
 | 
			
		||||
	ctx.Status(202)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user