mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-29 21:41:02 +00:00 
			
		
		
		
	Fixes #27114. * In Gitea 1.12 (#9532), a "dismiss stale approvals" branch protection setting was introduced, for ignoring stale reviews when verifying the approval count of a pull request. * In Gitea 1.14 (#12674), the "dismiss review" feature was added. * This caused confusion with users (#25858), as "dismiss" now means 2 different things. * In Gitea 1.20 (#25882), the behavior of the "dismiss stale approvals" branch protection was modified to actually dismiss the stale review. For some users this new behavior of dismissing the stale reviews is not desirable. So this PR reintroduces the old behavior as a new "ignore stale approvals" branch protection setting. --------- Co-authored-by: delvh <dev.lh@web.de>
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2016 The Gogs Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package structs
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| // Branch represents a repository branch
 | |
| type Branch struct {
 | |
| 	Name                          string         `json:"name"`
 | |
| 	Commit                        *PayloadCommit `json:"commit"`
 | |
| 	Protected                     bool           `json:"protected"`
 | |
| 	RequiredApprovals             int64          `json:"required_approvals"`
 | |
| 	EnableStatusCheck             bool           `json:"enable_status_check"`
 | |
| 	StatusCheckContexts           []string       `json:"status_check_contexts"`
 | |
| 	UserCanPush                   bool           `json:"user_can_push"`
 | |
| 	UserCanMerge                  bool           `json:"user_can_merge"`
 | |
| 	EffectiveBranchProtectionName string         `json:"effective_branch_protection_name"`
 | |
| }
 | |
| 
 | |
| // BranchProtection represents a branch protection for a repository
 | |
| type BranchProtection struct {
 | |
| 	// Deprecated: true
 | |
| 	BranchName                    string   `json:"branch_name"`
 | |
| 	RuleName                      string   `json:"rule_name"`
 | |
| 	EnablePush                    bool     `json:"enable_push"`
 | |
| 	EnablePushWhitelist           bool     `json:"enable_push_whitelist"`
 | |
| 	PushWhitelistUsernames        []string `json:"push_whitelist_usernames"`
 | |
| 	PushWhitelistTeams            []string `json:"push_whitelist_teams"`
 | |
| 	PushWhitelistDeployKeys       bool     `json:"push_whitelist_deploy_keys"`
 | |
| 	EnableMergeWhitelist          bool     `json:"enable_merge_whitelist"`
 | |
| 	MergeWhitelistUsernames       []string `json:"merge_whitelist_usernames"`
 | |
| 	MergeWhitelistTeams           []string `json:"merge_whitelist_teams"`
 | |
| 	EnableStatusCheck             bool     `json:"enable_status_check"`
 | |
| 	StatusCheckContexts           []string `json:"status_check_contexts"`
 | |
| 	RequiredApprovals             int64    `json:"required_approvals"`
 | |
| 	EnableApprovalsWhitelist      bool     `json:"enable_approvals_whitelist"`
 | |
| 	ApprovalsWhitelistUsernames   []string `json:"approvals_whitelist_username"`
 | |
| 	ApprovalsWhitelistTeams       []string `json:"approvals_whitelist_teams"`
 | |
| 	BlockOnRejectedReviews        bool     `json:"block_on_rejected_reviews"`
 | |
| 	BlockOnOfficialReviewRequests bool     `json:"block_on_official_review_requests"`
 | |
| 	BlockOnOutdatedBranch         bool     `json:"block_on_outdated_branch"`
 | |
| 	DismissStaleApprovals         bool     `json:"dismiss_stale_approvals"`
 | |
| 	IgnoreStaleApprovals          bool     `json:"ignore_stale_approvals"`
 | |
| 	RequireSignedCommits          bool     `json:"require_signed_commits"`
 | |
| 	ProtectedFilePatterns         string   `json:"protected_file_patterns"`
 | |
| 	UnprotectedFilePatterns       string   `json:"unprotected_file_patterns"`
 | |
| 	// swagger:strfmt date-time
 | |
| 	Created time.Time `json:"created_at"`
 | |
| 	// swagger:strfmt date-time
 | |
| 	Updated time.Time `json:"updated_at"`
 | |
| }
 | |
| 
 | |
| // CreateBranchProtectionOption options for creating a branch protection
 | |
| type CreateBranchProtectionOption struct {
 | |
| 	// Deprecated: true
 | |
| 	BranchName                    string   `json:"branch_name"`
 | |
| 	RuleName                      string   `json:"rule_name"`
 | |
| 	EnablePush                    bool     `json:"enable_push"`
 | |
| 	EnablePushWhitelist           bool     `json:"enable_push_whitelist"`
 | |
| 	PushWhitelistUsernames        []string `json:"push_whitelist_usernames"`
 | |
| 	PushWhitelistTeams            []string `json:"push_whitelist_teams"`
 | |
| 	PushWhitelistDeployKeys       bool     `json:"push_whitelist_deploy_keys"`
 | |
| 	EnableMergeWhitelist          bool     `json:"enable_merge_whitelist"`
 | |
| 	MergeWhitelistUsernames       []string `json:"merge_whitelist_usernames"`
 | |
| 	MergeWhitelistTeams           []string `json:"merge_whitelist_teams"`
 | |
| 	EnableStatusCheck             bool     `json:"enable_status_check"`
 | |
| 	StatusCheckContexts           []string `json:"status_check_contexts"`
 | |
| 	RequiredApprovals             int64    `json:"required_approvals"`
 | |
| 	EnableApprovalsWhitelist      bool     `json:"enable_approvals_whitelist"`
 | |
| 	ApprovalsWhitelistUsernames   []string `json:"approvals_whitelist_username"`
 | |
| 	ApprovalsWhitelistTeams       []string `json:"approvals_whitelist_teams"`
 | |
| 	BlockOnRejectedReviews        bool     `json:"block_on_rejected_reviews"`
 | |
| 	BlockOnOfficialReviewRequests bool     `json:"block_on_official_review_requests"`
 | |
| 	BlockOnOutdatedBranch         bool     `json:"block_on_outdated_branch"`
 | |
| 	DismissStaleApprovals         bool     `json:"dismiss_stale_approvals"`
 | |
| 	IgnoreStaleApprovals          bool     `json:"ignore_stale_approvals"`
 | |
| 	RequireSignedCommits          bool     `json:"require_signed_commits"`
 | |
| 	ProtectedFilePatterns         string   `json:"protected_file_patterns"`
 | |
| 	UnprotectedFilePatterns       string   `json:"unprotected_file_patterns"`
 | |
| }
 | |
| 
 | |
| // EditBranchProtectionOption options for editing a branch protection
 | |
| type EditBranchProtectionOption struct {
 | |
| 	EnablePush                    *bool    `json:"enable_push"`
 | |
| 	EnablePushWhitelist           *bool    `json:"enable_push_whitelist"`
 | |
| 	PushWhitelistUsernames        []string `json:"push_whitelist_usernames"`
 | |
| 	PushWhitelistTeams            []string `json:"push_whitelist_teams"`
 | |
| 	PushWhitelistDeployKeys       *bool    `json:"push_whitelist_deploy_keys"`
 | |
| 	EnableMergeWhitelist          *bool    `json:"enable_merge_whitelist"`
 | |
| 	MergeWhitelistUsernames       []string `json:"merge_whitelist_usernames"`
 | |
| 	MergeWhitelistTeams           []string `json:"merge_whitelist_teams"`
 | |
| 	EnableStatusCheck             *bool    `json:"enable_status_check"`
 | |
| 	StatusCheckContexts           []string `json:"status_check_contexts"`
 | |
| 	RequiredApprovals             *int64   `json:"required_approvals"`
 | |
| 	EnableApprovalsWhitelist      *bool    `json:"enable_approvals_whitelist"`
 | |
| 	ApprovalsWhitelistUsernames   []string `json:"approvals_whitelist_username"`
 | |
| 	ApprovalsWhitelistTeams       []string `json:"approvals_whitelist_teams"`
 | |
| 	BlockOnRejectedReviews        *bool    `json:"block_on_rejected_reviews"`
 | |
| 	BlockOnOfficialReviewRequests *bool    `json:"block_on_official_review_requests"`
 | |
| 	BlockOnOutdatedBranch         *bool    `json:"block_on_outdated_branch"`
 | |
| 	DismissStaleApprovals         *bool    `json:"dismiss_stale_approvals"`
 | |
| 	IgnoreStaleApprovals          *bool    `json:"ignore_stale_approvals"`
 | |
| 	RequireSignedCommits          *bool    `json:"require_signed_commits"`
 | |
| 	ProtectedFilePatterns         *string  `json:"protected_file_patterns"`
 | |
| 	UnprotectedFilePatterns       *string  `json:"unprotected_file_patterns"`
 | |
| }
 |