From 356b707dde00f61f806c8a27879830a1d9b5b895 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Tue, 25 Mar 2025 00:20:08 -0700
Subject: [PATCH] Git client will follow 301 but 307 (#34005)

Fix #28460

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
---
 services/context/repo.go | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/services/context/repo.go b/services/context/repo.go
index 6eccd1312a..a083c557e6 100644
--- a/services/context/repo.go
+++ b/services/context/repo.go
@@ -328,7 +328,9 @@ func RedirectToRepo(ctx *Base, redirectRepoID int64) {
 	if ctx.Req.URL.RawQuery != "" {
 		redirectPath += "?" + ctx.Req.URL.RawQuery
 	}
-	ctx.Redirect(path.Join(setting.AppSubURL, redirectPath), http.StatusTemporaryRedirect)
+	// Git client needs a 301 redirect by default to follow the new location
+	// It's not documentated in git documentation, but it's the behavior of git client
+	ctx.Redirect(path.Join(setting.AppSubURL, redirectPath), http.StatusMovedPermanently)
 }
 
 func repoAssignment(ctx *Context, repo *repo_model.Repository) {