diff --git a/services/repository/branch.go b/services/repository/branch.go index 869921bfbc56b..7fc99930776a1 100644 --- a/services/repository/branch.go +++ b/services/repository/branch.go @@ -147,6 +147,23 @@ func DelDivergenceFromCache(repoID int64, branchName string) error { return cache.GetCache().Delete(getDivergenceCacheKey(repoID, branchName)) } +// DelRepoDivergenceFromCache deletes all divergence caches of a repository +func DelRepoDivergenceFromCache(ctx context.Context, repoID int64) error { + dbBranches, err := db.Find[git_model.Branch](ctx, git_model.FindBranchOptions{ + RepoID: repoID, + ListOptions: db.ListOptionsAll, + }) + if err != nil { + return err + } + for i := range dbBranches { + if err := DelDivergenceFromCache(repoID, dbBranches[i].Name); err != nil { + log.Error("DelDivergenceFromCache: %v", err) + } + } + return nil +} + func loadOneBranch(ctx context.Context, repo *repo_model.Repository, dbBranch *git_model.Branch, protectedBranches *git_model.ProtectedBranchRules, repoIDToRepo map[int64]*repo_model.Repository, repoIDToGitRepo map[int64]*git.Repository, diff --git a/services/repository/push.go b/services/repository/push.go index 39843249a53a7..f27e6a58dd6ce 100644 --- a/services/repository/push.go +++ b/services/repository/push.go @@ -221,8 +221,14 @@ func pushUpdates(optsList []*repo_module.PushUpdateOptions) error { } // delete cache for divergence - if err := DelDivergenceFromCache(repo.ID, branch); err != nil { - log.Error("DelDivergenceFromCache: %v", err) + if branch == repo.DefaultBranch { + if err := DelRepoDivergenceFromCache(ctx, repo.ID); err != nil { + log.Error("DelRepoDivergenceFromCache: %v", err) + } + } else { + if err := DelDivergenceFromCache(repo.ID, branch); err != nil { + log.Error("DelDivergenceFromCache: %v", err) + } } commits := repo_module.GitToPushCommits(l)