mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 19:38:23 +00:00 
			
		
		
		
	Supports wildcard protected branch (#20825)
This PR introduce glob match for protected branch name. The separator is `/` and you can use `*` matching non-separator chars and use `**` across separator. It also supports input an exist or non-exist branch name as matching condition and branch name condition has high priority than glob rule. Should fix #2529 and #15705 screenshots <img width="1160" alt="image" src="https://user-images.githubusercontent.com/81045/205651179-ebb5492a-4ade-4bb4-a13c-965e8c927063.png"> Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		| @@ -83,10 +83,11 @@ func IsCommitStatusContextSuccess(commitStatuses []*git_model.CommitStatus, requ | ||||
|  | ||||
| // IsPullCommitStatusPass returns if all required status checks PASS | ||||
| func IsPullCommitStatusPass(ctx context.Context, pr *issues_model.PullRequest) (bool, error) { | ||||
| 	if err := pr.LoadProtectedBranch(ctx); err != nil { | ||||
| 	pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch) | ||||
| 	if err != nil { | ||||
| 		return false, errors.Wrap(err, "GetLatestCommitStatus") | ||||
| 	} | ||||
| 	if pr.ProtectedBranch == nil || !pr.ProtectedBranch.EnableStatusCheck { | ||||
| 	if pb == nil || !pb.EnableStatusCheck { | ||||
| 		return true, nil | ||||
| 	} | ||||
|  | ||||
| @@ -137,12 +138,13 @@ func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullR | ||||
| 		return "", errors.Wrap(err, "GetLatestCommitStatus") | ||||
| 	} | ||||
|  | ||||
| 	if err := pr.LoadProtectedBranch(ctx); err != nil { | ||||
| 	pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch) | ||||
| 	if err != nil { | ||||
| 		return "", errors.Wrap(err, "LoadProtectedBranch") | ||||
| 	} | ||||
| 	var requiredContexts []string | ||||
| 	if pr.ProtectedBranch != nil { | ||||
| 		requiredContexts = pr.ProtectedBranch.StatusCheckContexts | ||||
| 	if pb != nil { | ||||
| 		requiredContexts = pb.StatusCheckContexts | ||||
| 	} | ||||
|  | ||||
| 	return MergeRequiredContextsCommitStatus(commitStatuses, requiredContexts), nil | ||||
|   | ||||
		Reference in New Issue
	
	Block a user