mirror of
https://github.com/go-gitea/gitea.git
synced 2026-08-07 17:49:04 +00:00
deccd53c24
1. always use "last commit cache" 2. correctly build the cache key for any input (SafeCacheKey) 3. fix the git note "last commit cache FIXME" and avoid OOM
28 lines
747 B
Go
28 lines
747 B
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package git
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gitea.dev/modules/cache"
|
|
)
|
|
|
|
func makeCommitsCountCacheKey(repo RepositoryFacade, ref RefName) string {
|
|
return cache.SafeCacheKey("git-commits-count:"+repo.GitRepoManagedID(), ref.String())
|
|
}
|
|
|
|
func RemoveCommitsCountCache(repo RepositoryFacade, ref RefName) {
|
|
cache.Remove(makeCommitsCountCacheKey(repo, ref))
|
|
}
|
|
|
|
func GetCommitsCountCache(ctx context.Context, repo RepositoryFacade, ref RefName, commit *Commit) (int64, error) {
|
|
if commit == nil {
|
|
return 0, nil
|
|
}
|
|
return cache.GetInt64(makeCommitsCountCacheKey(repo, ref), func() (int64, error) {
|
|
return CommitsCountOfCommit(ctx, repo, commit.ID.String())
|
|
})
|
|
}
|