mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 00:20:25 +08: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:
		@@ -66,13 +66,16 @@ func (opts *ApplyDiffPatchOptions) Validate(ctx context.Context, repo *repo_mode
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		protectedBranch, err := git_model.GetProtectedBranchBy(ctx, repo.ID, opts.OldBranch)
 | 
			
		||||
		protectedBranch, err := git_model.GetFirstMatchProtectedBranchRule(ctx, repo.ID, opts.OldBranch)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if protectedBranch != nil && !protectedBranch.CanUserPush(ctx, doer.ID) {
 | 
			
		||||
			return models.ErrUserCannotCommit{
 | 
			
		||||
				UserName: doer.LowerName,
 | 
			
		||||
		if protectedBranch != nil {
 | 
			
		||||
			protectedBranch.Repo = repo
 | 
			
		||||
			if !protectedBranch.CanUserPush(ctx, doer) {
 | 
			
		||||
				return models.ErrUserCannotCommit{
 | 
			
		||||
					UserName: doer.LowerName,
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if protectedBranch != nil && protectedBranch.RequireSignedCommits {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user