+
Skip to content

fix!: Differentiate merge method of pull request and merge queue #3559

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions github/enterprise_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoName(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -313,7 +313,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoName(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -602,7 +602,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoProperty(t *testin
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -713,7 +713,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoProperty(t *testin
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -976,7 +976,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoName(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1076,7 +1076,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoName(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1358,7 +1358,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoProperty(t *testing.
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1468,7 +1468,7 @@ func TestEnterpriseService_CreateRepositoryRuleset_OrgIdRepoProperty(t *testing.
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down
20 changes: 10 additions & 10 deletions github/event_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9761,10 +9761,10 @@ func TestRepositoryRulesetEvent_Unmarshal(t *testing.T) {
Deletion: &EmptyRuleParameters{},
RequiredLinearHistory: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{
MergeMethodSquash,
MergeMethodRebase,
MergeMethodMerge,
AllowedMergeMethods: []PullRequestMergeMethod{
PullRequestMergeMethodSquash,
PullRequestMergeMethodRebase,
PullRequestMergeMethodMerge,
},
AutomaticCopilotCodeReviewEnabled: Ptr(false),
DismissStaleReviewsOnPush: false,
Expand Down Expand Up @@ -9825,9 +9825,9 @@ func TestRepositoryRulesetEvent_Unmarshal(t *testing.T) {
Deletion: &EmptyRuleParameters{},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{
MergeMethodSquash,
MergeMethodRebase,
AllowedMergeMethods: []PullRequestMergeMethod{
PullRequestMergeMethodSquash,
PullRequestMergeMethodRebase,
},
AutomaticCopilotCodeReviewEnabled: Ptr(false),
DismissStaleReviewsOnPush: false,
Expand Down Expand Up @@ -9880,9 +9880,9 @@ func TestRepositoryRulesetEvent_Unmarshal(t *testing.T) {
Rule: &RepositoryRule{
Type: RulesetRuleTypePullRequest,
Parameters: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{
MergeMethodSquash,
MergeMethodRebase,
AllowedMergeMethods: []PullRequestMergeMethod{
PullRequestMergeMethodSquash,
PullRequestMergeMethodRebase,
},
AutomaticCopilotCodeReviewEnabled: Ptr(false),
DismissStaleReviewsOnPush: false,
Expand Down
12 changes: 6 additions & 6 deletions github/orgs_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoNames(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -352,7 +352,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoNames(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -615,7 +615,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoProperty(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -718,7 +718,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoProperty(t *testing.T)
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -966,7 +966,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoIDs(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down Expand Up @@ -1061,7 +1061,7 @@ func TestOrganizationsService_CreateRepositoryRuleset_RepoIDs(t *testing.T) {
},
RequiredSignatures: &EmptyRuleParameters{},
PullRequest: &PullRequestRuleParameters{
AllowedMergeMethods: []MergeMethod{MergeMethodRebase, MergeMethodSquash},
AllowedMergeMethods: []PullRequestMergeMethod{PullRequestMergeMethodRebase, PullRequestMergeMethodSquash},
DismissStaleReviewsOnPush: true,
RequireCodeOwnerReview: true,
RequireLastPushApproval: true,
Expand Down
48 changes: 34 additions & 14 deletions github/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,34 @@ const (
MergeGroupingStrategyHeadGreen MergeGroupingStrategy = "HEADGREEN"
)

// MergeMethod models a GitHub merge method.
type MergeMethod string
// PullRequestMergeMethod is used in PullRequestRuleParameters,
// where the GitHub API expects lowercase merge method values: "merge", "rebase", "squash".
//
// NOTE: GitHub's API inconsistently uses different casing for the same logical values
// across different rules.
//
// TODO: Unify with MergeQueueMergeMethod once the GitHub API uses consistent casing.
type PullRequestMergeMethod string

const (
PullRequestMergeMethodMerge PullRequestMergeMethod = "merge"
PullRequestMergeMethodRebase PullRequestMergeMethod = "rebase"
PullRequestMergeMethodSquash PullRequestMergeMethod = "squash"
)

// MergeQueueMergeMethod is used in MergeQueueRuleParameters,
// where the GitHub API expects uppercase merge method values: "MERGE", "REBASE", "SQUASH".
//
// NOTE: This type exists alongside PullRequestMergeMethod solely due to API casing inconsistencies.
// It enforces the correct usage by API context.
//
// TODO: Unify with PullRequestMergeMethod once the GitHub API uses consistent casing.
type MergeQueueMergeMethod string

// This is the set of GitHub merge methods.
const (
MergeMethodMerge MergeMethod = "merge"
MergeMethodRebase MergeMethod = "rebase"
MergeMethodSquash MergeMethod = "squash"
MergeQueueMergeMethodMerge MergeQueueMergeMethod = "MERGE"
MergeQueueMergeMethodRebase MergeQueueMergeMethod = "REBASE"
MergeQueueMergeMethodSquash MergeQueueMergeMethod = "SQUASH"
)

// PatternRuleOperator models a GitHub pattern rule operator.
Expand Down Expand Up @@ -383,7 +403,7 @@ type MergeQueueRuleParameters struct {
GroupingStrategy MergeGroupingStrategy `json:"grouping_strategy"`
MaxEntriesToBuild int `json:"max_entries_to_build"`
MaxEntriesToMerge int `json:"max_entries_to_merge"`
MergeMethod MergeMethod `json:"merge_method"`
MergeMethod MergeQueueMergeMethod `json:"merge_method"`
MinEntriesToMerge int `json:"min_entries_to_merge"`
MinEntriesToMergeWaitMinutes int `json:"min_entries_to_merge_wait_minutes"`
}
Expand All @@ -395,13 +415,13 @@ type RequiredDeploymentsRuleParameters struct {

// PullRequestRuleParameters represents the pull_request rule parameters.
type PullRequestRuleParameters struct {
AllowedMergeMethods []MergeMethod `json:"allowed_merge_methods"`
AutomaticCopilotCodeReviewEnabled *bool `json:"automatic_copilot_code_review_enabled,omitempty"`
DismissStaleReviewsOnPush bool `json:"dismiss_stale_reviews_on_push"`
RequireCodeOwnerReview bool `json:"require_code_owner_review"`
RequireLastPushApproval bool `json:"require_last_push_approval"`
RequiredApprovingReviewCount int `json:"required_approving_review_count"`
RequiredReviewThreadResolution bool `json:"required_review_thread_resolution"`
AllowedMergeMethods []PullRequestMergeMethod `json:"allowed_merge_methods"`
AutomaticCopilotCodeReviewEnabled *bool `json:"automatic_copilot_code_review_enabled,omitempty"`
DismissStaleReviewsOnPush bool `json:"dismiss_stale_reviews_on_push"`
RequireCodeOwnerReview bool `json:"require_code_owner_review"`
RequireLastPushApproval bool `json:"require_last_push_approval"`
RequiredApprovingReviewCount int `json:"required_approving_review_count"`
RequiredReviewThreadResolution bool `json:"required_review_thread_resolution"`
}

// RequiredStatusChecksRuleParameters represents the required status checks rule parameters.
Expand Down
Loading
Loading
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载