From 45ac90eb54d9f6b6877f68ebd0d84ebd12de170f Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Thu, 6 Jul 2023 19:18:37 +0800
Subject: [PATCH] Sync branches when mirroring (#25722)

Caused by #22743

---------

Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
---
 modules/git/git.go             | 1 -
 services/mirror/mirror_pull.go | 5 +++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/modules/git/git.go b/modules/git/git.go
index f78a496d53..c9d174e118 100644
--- a/modules/git/git.go
+++ b/modules/git/git.go
@@ -188,7 +188,6 @@ func InitFull(ctx context.Context) (err error) {
 	if CheckGitVersionAtLeast("2.9") == nil {
 		globalCommandArgs = append(globalCommandArgs, "-c", "credential.helper=")
 	}
-
 	SupportProcReceive = CheckGitVersionAtLeast("2.29") == nil
 
 	if setting.LFS.StartServer {
diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go
index 53ab632b01..51c7de58b6 100644
--- a/services/mirror/mirror_pull.go
+++ b/services/mirror/mirror_pull.go
@@ -307,6 +307,11 @@ func runSync(ctx context.Context, m *repo_model.Mirror) ([]*mirrorSyncResult, bo
 		return nil, false
 	}
 
+	log.Trace("SyncMirrors [repo: %-v]: syncing branches...", m.Repo)
+	if _, err = repo_module.SyncRepoBranchesWithRepo(ctx, m.Repo, gitRepo, 0); err != nil {
+		log.Error("SyncMirrors [repo: %-v]: failed to synchronize branches: %v", m.Repo, err)
+	}
+
 	log.Trace("SyncMirrors [repo: %-v]: syncing releases with tags...", m.Repo)
 	if err = repo_module.SyncReleasesWithTags(m.Repo, gitRepo); err != nil {
 		log.Error("SyncMirrors [repo: %-v]: failed to synchronize tags to releases: %v", m.Repo, err)