mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00:00 
			
		
		
		
	Part of #27065 This reduces the usage of `db.DefaultContext`. I think I've got enough files for the first PR. When this is merged, I will continue working on this. Considering how many files this PR affect, I hope it won't take to long to merge, so I don't end up in the merge conflict hell. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package setting
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	repo_model "code.gitea.io/gitea/models/repo"
 | 
						|
	"code.gitea.io/gitea/modules/context"
 | 
						|
	"code.gitea.io/gitea/modules/git"
 | 
						|
	"code.gitea.io/gitea/modules/log"
 | 
						|
	"code.gitea.io/gitea/modules/setting"
 | 
						|
	"code.gitea.io/gitea/routers/web/repo"
 | 
						|
	notify_service "code.gitea.io/gitea/services/notify"
 | 
						|
)
 | 
						|
 | 
						|
// SetDefaultBranchPost set default branch
 | 
						|
func SetDefaultBranchPost(ctx *context.Context) {
 | 
						|
	ctx.Data["Title"] = ctx.Tr("repo.settings.branches.update_default_branch")
 | 
						|
	ctx.Data["PageIsSettingsBranches"] = true
 | 
						|
 | 
						|
	repo.PrepareBranchList(ctx)
 | 
						|
	if ctx.Written() {
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	repo := ctx.Repo.Repository
 | 
						|
 | 
						|
	switch ctx.FormString("action") {
 | 
						|
	case "default_branch":
 | 
						|
		if ctx.HasError() {
 | 
						|
			ctx.HTML(http.StatusOK, tplBranches)
 | 
						|
			return
 | 
						|
		}
 | 
						|
 | 
						|
		branch := ctx.FormString("branch")
 | 
						|
		if !ctx.Repo.GitRepo.IsBranchExist(branch) {
 | 
						|
			ctx.Status(http.StatusNotFound)
 | 
						|
			return
 | 
						|
		} else if repo.DefaultBranch != branch {
 | 
						|
			repo.DefaultBranch = branch
 | 
						|
			if err := ctx.Repo.GitRepo.SetDefaultBranch(branch); err != nil {
 | 
						|
				if !git.IsErrUnsupportedVersion(err) {
 | 
						|
					ctx.ServerError("SetDefaultBranch", err)
 | 
						|
					return
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if err := repo_model.UpdateDefaultBranch(ctx, repo); err != nil {
 | 
						|
				ctx.ServerError("SetDefaultBranch", err)
 | 
						|
				return
 | 
						|
			}
 | 
						|
 | 
						|
			notify_service.ChangeDefaultBranch(ctx, repo)
 | 
						|
		}
 | 
						|
 | 
						|
		log.Trace("Repository basic settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
 | 
						|
 | 
						|
		ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))
 | 
						|
		ctx.Redirect(setting.AppSubURL + ctx.Req.URL.EscapedPath())
 | 
						|
	default:
 | 
						|
		ctx.NotFound("", nil)
 | 
						|
	}
 | 
						|
}
 |