From a4b1967ea31a5d957775fda8a18a020e77a55c15 Mon Sep 17 00:00:00 2001
From: a1012112796 <1012112796@qq.com>
Date: Sun, 19 Jun 2022 21:37:14 +0800
Subject: [PATCH] Fix delete pull head ref for DeleteIssue (#20032)  (#20034)

Backport #20032

In DeleteIssue the PR git head reference should be `/refs/pull/xxx/head` not `/refs/pull/xxx`

Fix #19655

Signed-off-by: a1012112796 <1012112796@qq.com>
---
 routers/web/repo/issue.go | 5 +++++
 services/issue/issue.go   | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 11d2daeeff..5b72ff79af 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -878,6 +878,11 @@ func DeleteIssue(ctx *context.Context) {
 		return
 	}
 
+	if issue.IsPull {
+		ctx.Redirect(fmt.Sprintf("%s/pulls", ctx.Repo.Repository.HTMLURL()), http.StatusSeeOther)
+		return
+	}
+
 	ctx.Redirect(fmt.Sprintf("%s/issues", ctx.Repo.Repository.HTMLURL()), http.StatusSeeOther)
 }
 
diff --git a/services/issue/issue.go b/services/issue/issue.go
index ded281e209..467bc14b84 100644
--- a/services/issue/issue.go
+++ b/services/issue/issue.go
@@ -149,7 +149,7 @@ func DeleteIssue(doer *user_model.User, gitRepo *git.Repository, issue *issues_m
 
 	// delete pull request related git data
 	if issue.IsPull {
-		if err := gitRepo.RemoveReference(fmt.Sprintf("%s%d", git.PullPrefix, issue.PullRequest.Index)); err != nil {
+		if err := gitRepo.RemoveReference(fmt.Sprintf("%s%d/head", git.PullPrefix, issue.PullRequest.Index)); err != nil {
 			return err
 		}
 	}