mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +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