mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Search branches (#27055)
Resolve #25233 <img width="1315" alt="图片" src="https://github.com/go-gitea/gitea/assets/81045/3ba59b58-471a-4e1b-985c-87edac2268c0"> <img width="1297" alt="图片" src="https://github.com/go-gitea/gitea/assets/81045/b6caa12f-323b-4f70-9c44-ef91cb71a26c">
This commit is contained in:
		@@ -70,6 +70,7 @@ type FindBranchOptions struct {
 | 
			
		||||
	ExcludeBranchNames []string
 | 
			
		||||
	IsDeletedBranch    util.OptionalBool
 | 
			
		||||
	OrderBy            string
 | 
			
		||||
	Keyword            string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (opts *FindBranchOptions) Cond() builder.Cond {
 | 
			
		||||
@@ -84,6 +85,9 @@ func (opts *FindBranchOptions) Cond() builder.Cond {
 | 
			
		||||
	if !opts.IsDeletedBranch.IsNone() {
 | 
			
		||||
		cond = cond.And(builder.Eq{"is_deleted": opts.IsDeletedBranch.IsTrue()})
 | 
			
		||||
	}
 | 
			
		||||
	if opts.Keyword != "" {
 | 
			
		||||
		cond = cond.And(builder.Like{"name", opts.Keyword})
 | 
			
		||||
	}
 | 
			
		||||
	return cond
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2515,6 +2515,7 @@ branch.default_deletion_failed = Branch "%s" is the default branch. It cannot be
 | 
			
		||||
branch.restore = Restore Branch "%s"
 | 
			
		||||
branch.download = Download Branch "%s"
 | 
			
		||||
branch.rename = Rename Branch "%s"
 | 
			
		||||
branch.search = Search Branch
 | 
			
		||||
branch.included_desc = This branch is part of the default branch
 | 
			
		||||
branch.included = Included
 | 
			
		||||
branch.create_new_branch = Create branch from branch:
 | 
			
		||||
 
 | 
			
		||||
@@ -51,7 +51,9 @@ func Branches(ctx *context.Context) {
 | 
			
		||||
	}
 | 
			
		||||
	pageSize := setting.Git.BranchesRangeSize
 | 
			
		||||
 | 
			
		||||
	defaultBranch, branches, branchesCount, err := repo_service.LoadBranches(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, util.OptionalBoolNone, page, pageSize)
 | 
			
		||||
	kw := ctx.FormString("q")
 | 
			
		||||
 | 
			
		||||
	defaultBranch, branches, branchesCount, err := repo_service.LoadBranches(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, util.OptionalBoolNone, kw, page, pageSize)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.ServerError("LoadBranches", err)
 | 
			
		||||
		return
 | 
			
		||||
@@ -73,6 +75,7 @@ func Branches(ctx *context.Context) {
 | 
			
		||||
		commitStatus[commitID] = git_model.CalcCommitStatus(cs)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx.Data["Keyword"] = kw
 | 
			
		||||
	ctx.Data["Branches"] = branches
 | 
			
		||||
	ctx.Data["CommitStatus"] = commitStatus
 | 
			
		||||
	ctx.Data["CommitStatuses"] = commitStatuses
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,7 @@ type Branch struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LoadBranches loads branches from the repository limited by page & pageSize.
 | 
			
		||||
func LoadBranches(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, isDeletedBranch util.OptionalBool, page, pageSize int) (*Branch, []*Branch, int64, error) {
 | 
			
		||||
func LoadBranches(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, isDeletedBranch util.OptionalBool, keyword string, page, pageSize int) (*Branch, []*Branch, int64, error) {
 | 
			
		||||
	defaultDBBranch, err := git_model.GetBranch(ctx, repo.ID, repo.DefaultBranch)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, nil, 0, err
 | 
			
		||||
@@ -79,6 +79,7 @@ func LoadBranches(ctx context.Context, repo *repo_model.Repository, gitRepo *git
 | 
			
		||||
			Page:     page,
 | 
			
		||||
			PageSize: pageSize,
 | 
			
		||||
		},
 | 
			
		||||
		Keyword: keyword,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	totalNumOfBranches, err := git_model.CountBranches(ctx, branchOpts)
 | 
			
		||||
 
 | 
			
		||||
@@ -70,9 +70,20 @@
 | 
			
		||||
		{{end}}
 | 
			
		||||
 | 
			
		||||
		{{if .Branches}}
 | 
			
		||||
			<h4 class="ui top attached header">
 | 
			
		||||
			<h4 class="ui top attached header gt-df gt-ac gt-sb">
 | 
			
		||||
				<div class="gt-df gt-ac">
 | 
			
		||||
					{{.locale.Tr "repo.branches"}}
 | 
			
		||||
				</div>
 | 
			
		||||
				<div class="gt-whitespace-nowrap">
 | 
			
		||||
					<form class="ignore-dirty" method="get">
 | 
			
		||||
						<div class="ui tiny search input">
 | 
			
		||||
							<input name="q" placeholder="{{.locale.Tr "repo.branch.search"}}" value="{{.Keyword}}" autofocus>
 | 
			
		||||
						</div>
 | 
			
		||||
						<button class="ui primary tiny button gt-mr-0" data-tooltip-content={{.locale.Tr "repo.commits.search.tooltip"}}>{{.locale.Tr "repo.commits.find"}}</button>
 | 
			
		||||
					</form>
 | 
			
		||||
				</div>
 | 
			
		||||
			</h4>
 | 
			
		||||
 | 
			
		||||
			<div class="ui attached table segment">
 | 
			
		||||
				<table class="ui very basic striped fixed table single line">
 | 
			
		||||
					<tbody>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user