fix: show "merge" form for empty PR (#39640)

fix #39637
This commit is contained in:
wxiaoguang authored and GitHub committed 2026-10-06 17:28:28 +00:00
1 parent 20ea3e204d
commit 26475404d4
2 files changed
+21 -2

No files matched your search

+2 -2
View File
@@ -112,7 +112,7 @@ func (prInfo *pullRequestViewInfo) prepareMergeBoxFormProps(ctx *context.Context
// if this pr can be merged now, then hide the auto merge
generalHideAutoMerge := prInfo.MergeBoxData.canMergeNow && allOverridableChecksOk
var mergeStyles []any
if pull.IsStatusMergeable() {
if pull.IsStatusMergeable() || pull.IsEmpty() {
mergeStyles = []any{
map[string]any{
"name": "merge",
@@ -176,7 +176,7 @@ func (prInfo *pullRequestViewInfo) prepareMergeBoxFormProps(ctx *context.Context
if len(mergeStyles) > 0 {
mergeFormProps["mergeStyles"] = mergeStyles
prInfo.MergeBoxData.MergeFormProps = mergeFormProps
} else if pull.IsStatusMergeable() {
} else if pull.IsStatusMergeable() || pull.IsEmpty() {
// no merge style was set in repo setting
prInfo.MergeBoxData.infoCommitBlockers.AddInfoItem(
svg.RenderHTML("octicon-x", 16, "tw-text-red"),
+19
View File
@@ -17,12 +17,14 @@ import (
repo_model "gitea.dev/models/repo"
"gitea.dev/models/unittest"
"gitea.dev/modules/commitstatus"
"gitea.dev/modules/json"
"gitea.dev/modules/setting"
api "gitea.dev/modules/structs"
"gitea.dev/modules/test"
"gitea.dev/services/pull"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPullCreate_CommitStatus(t *testing.T) {
@@ -134,6 +136,23 @@ func TestPullCreate_EmptyChangesWithDifferentCommits(t *testing.T) {
text := strings.TrimSpace(doc.doc.Find(".merge-section").Text())
assert.Contains(t, text, "The changes on this branch are already on the target branch. This will be an empty commit.")
assert.Contains(t, text, "This pull request can be merged automatically.")
mergeFormProps, exists := doc.doc.Find("#pull-request-merge-form").Attr("data-merge-form-props")
require.True(t, exists)
var mergeForm struct {
EmptyCommit bool `json:"emptyCommit"`
CanMergeNow bool `json:"canMergeNow"`
MergeStyles []struct {
Name string `json:"name"`
Allowed bool `json:"allowed"`
} `json:"mergeStyles"`
}
require.NoError(t, json.Unmarshal([]byte(mergeFormProps), &mergeForm))
assert.True(t, mergeForm.EmptyCommit)
assert.True(t, mergeForm.CanMergeNow)
assert.Contains(t, mergeForm.MergeStyles, struct {
Name string `json:"name"`
Allowed bool `json:"allowed"`
}{Name: "merge", Allowed: true})
})
}