Skip to content

Commit

Permalink
Get latest commit statuses from database instead of git data on dashb…
Browse files Browse the repository at this point in the history
…oard for repositories (#25605)

related #24638
  • Loading branch information
lunny authored Jul 3, 2023
1 parent 640a88f commit 807c971
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
17 changes: 17 additions & 0 deletions models/git/branch_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,20 @@ func FindBranchNames(ctx context.Context, opts FindBranchOptions) ([]string, err
}
return branches, nil
}

func FindBranchesByRepoAndBranchName(ctx context.Context, repoBranches map[int64]string) (map[int64]string, error) {
cond := builder.NewCond()
for repoID, branchName := range repoBranches {
cond = cond.Or(builder.And(builder.Eq{"repo_id": repoID}, builder.Eq{"name": branchName}))
}
var branches []*Branch
if err := db.GetEngine(ctx).
Where(cond).Find(&branches); err != nil {
return nil, err
}
branchMap := make(map[int64]string, len(branches))
for _, branch := range branches {
branchMap[branch.RepoID] = branch.CommitID
}
return branchMap, nil
}
14 changes: 8 additions & 6 deletions routers/web/repo/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -579,13 +579,15 @@ func SearchRepo(ctx *context.Context) {

// collect the latest commit of each repo
// at most there are dozens of repos (limited by MaxResponseItems), so it's not a big problem at the moment
repoIDsToLatestCommitSHAs := make(map[int64]string, len(repos))
repoBranchNames := make(map[int64]string, len(repos))
for _, repo := range repos {
commitID, err := repo_service.GetBranchCommitID(ctx, repo, repo.DefaultBranch)
if err != nil {
continue
}
repoIDsToLatestCommitSHAs[repo.ID] = commitID
repoBranchNames[repo.ID] = repo.DefaultBranch
}

repoIDsToLatestCommitSHAs, err := git_model.FindBranchesByRepoAndBranchName(ctx, repoBranchNames)
if err != nil {
log.Error("FindBranchesByRepoAndBranchName: %v", err)
return
}

// call the database O(1) times to get the commit statuses for all repos
Expand Down

0 comments on commit 807c971

Please sign in to comment.