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

This commit is contained in:
Giteabot
2026-10-06 10:49:17 -07:00
committed by GitHub
parent d6945fb0b5
commit acf5fd902d
2 changed files with 21 additions and 2 deletions
+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})
})
}