@@ -10,7 +10,9 @@ import (
1010
1111 issues_model "code.gitea.io/gitea/models/issues"
1212 project_model "code.gitea.io/gitea/models/project"
13+ "code.gitea.io/gitea/modules/json"
1314 "code.gitea.io/gitea/modules/structs"
15+ "code.gitea.io/gitea/modules/util"
1416 "code.gitea.io/gitea/modules/web/middleware"
1517 "code.gitea.io/gitea/services/context"
1618 "code.gitea.io/gitea/services/webhook"
@@ -523,16 +525,49 @@ func (f *InitializeLabelsForm) Validate(req *http.Request, errs binding.Errors)
523525type MergePullRequestForm struct {
524526 // required: true
525527 // enum: ["merge","rebase","rebase-merge","squash","fast-forward-only","manually-merged"]
526- Do string `binding:"Required;In(merge,rebase,rebase-merge,squash,fast-forward-only,manually-merged)"`
527- MergeTitleField string
528- MergeMessageField string
529- MergeCommitID string // only used for manually-merged
528+ Do string `json:"do" binding:"Required;In(merge,rebase,rebase-merge,squash,fast-forward-only,manually-merged)"`
529+ MergeTitleField string `json:"merge_title_field,omitempty"`
530+ MergeMessageField string `json:"merge_message_field,omitempty"`
531+ MergeCommitID string `json:"merge_commit_id,omitempty"` // only used for manually-merged
530532 HeadCommitID string `json:"head_commit_id,omitempty"`
531533 ForceMerge bool `json:"force_merge,omitempty"`
532534 MergeWhenChecksSucceed bool `json:"merge_when_checks_succeed,omitempty"`
533535 DeleteBranchAfterMerge * bool `json:"delete_branch_after_merge,omitempty"`
534536}
535537
538+ func (f * MergePullRequestForm ) UnmarshalJSON (b []byte ) error {
539+ // This is for backward compatibility, to support both field names like "do" and "Do",
540+ // because old code doesn't have "json" tag for these fields
541+ type aux struct {
542+ Do1 string `json:"do"`
543+ Do2 string `json:"Do"`
544+ MergeTitleField1 string `json:"merge_title_field"`
545+ MergeTitleField2 string `json:"MergeTitleField"`
546+ MergeMessageField1 string `json:"merge_message_field"`
547+ MergeMessageField2 string `json:"MergeMessageField"`
548+ MergeCommitID1 string `json:"merge_commit_id"`
549+ MergeCommitID2 string `json:"MergeCommitID"`
550+
551+ HeadCommitID string `json:"head_commit_id"`
552+ ForceMerge bool `json:"force_merge"`
553+ MergeWhenChecksSucceed bool `json:"merge_when_checks_succeed"`
554+ DeleteBranchAfterMerge * bool `json:"delete_branch_after_merge"`
555+ }
556+ var a aux
557+ if err := json .Unmarshal (b , & a ); err != nil {
558+ return err
559+ }
560+ f .Do = util .IfZero (a .Do1 , a .Do2 )
561+ f .MergeTitleField = util .IfZero (a .MergeTitleField1 , a .MergeTitleField2 )
562+ f .MergeMessageField = util .IfZero (a .MergeMessageField1 , a .MergeMessageField2 )
563+ f .MergeCommitID = util .IfZero (a .MergeCommitID1 , a .MergeCommitID2 )
564+ f .HeadCommitID = a .HeadCommitID
565+ f .ForceMerge = a .ForceMerge
566+ f .MergeWhenChecksSucceed = a .MergeWhenChecksSucceed
567+ f .DeleteBranchAfterMerge = a .DeleteBranchAfterMerge
568+ return nil
569+ }
570+
536571// Validate validates the fields
537572func (f * MergePullRequestForm ) Validate (req * http.Request , errs binding.Errors ) binding.Errors {
538573 ctx := context .GetValidateContext (req )
0 commit comments