From d9872797f84f6a81bbed3d19fee536ce2a3aadb6 Mon Sep 17 00:00:00 2001
From: wxiaoguang <wxiaoguang@gmail.com>
Date: Mon, 10 Jul 2023 16:12:50 +0800
Subject: [PATCH] Avoid amending the Rebase and Fast-forward merge if there is
 no message template (#25779)

Related #22669. Close #25177

After the fix:


![image](https://github.com/go-gitea/gitea/assets/2114189/0e900927-ea72-4f8f-bde6-5ed927cb02f4)

Co-authored-by: Giteabot <teabot@gitea.io>
---
 models/repo/git.go     | 2 +-
 services/pull/merge.go | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/models/repo/git.go b/models/repo/git.go
index 7ae88058dc..c1af7ee960 100644
--- a/models/repo/git.go
+++ b/models/repo/git.go
@@ -11,7 +11,7 @@ type MergeStyle string
 const (
 	// MergeStyleMerge create merge commit
 	MergeStyleMerge MergeStyle = "merge"
-	// MergeStyleRebase rebase before merging
+	// MergeStyleRebase rebase before merging, and fast-forward
 	MergeStyleRebase MergeStyle = "rebase"
 	// MergeStyleRebaseMerge rebase before merging with merge commit (--no-ff)
 	MergeStyleRebaseMerge MergeStyle = "rebase-merge"
diff --git a/services/pull/merge.go b/services/pull/merge.go
index 85bb90b853..416c744463 100644
--- a/services/pull/merge.go
+++ b/services/pull/merge.go
@@ -110,6 +110,11 @@ func getMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issue
 		}
 	}
 
+	if mergeStyle == repo_model.MergeStyleRebase {
+		// for fast-forward rebase, do not amend the last commit if there is no template
+		return "", "", nil
+	}
+
 	// Squash merge has a different from other styles.
 	if mergeStyle == repo_model.MergeStyleSquash {
 		return fmt.Sprintf("%s (%s%d)", pr.Issue.Title, issueReference, pr.Issue.Index), "", nil