mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Add commit count caching (#2774)
* Add commit count caching * Small refactoring * Add different key prefix for refs and commits * Add configuratuion option to allow to change caching time or disable it
This commit is contained in:
		| @@ -13,7 +13,9 @@ import ( | ||||
|  | ||||
| 	"code.gitea.io/git" | ||||
| 	"code.gitea.io/gitea/models" | ||||
| 	"code.gitea.io/gitea/modules/cache" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
|  | ||||
| 	"github.com/Unknwon/com" | ||||
| 	"gopkg.in/editorconfig/editorconfig-core-go.v1" | ||||
| 	"gopkg.in/macaron.v1" | ||||
| @@ -100,6 +102,21 @@ func (r *Repository) CanUseTimetracker(issue *models.Issue, user *models.User) b | ||||
| 		r.IsWriter() || issue.IsPoster(user.ID) || issue.AssigneeID == user.ID) | ||||
| } | ||||
|  | ||||
| // GetCommitsCount returns cached commit count for current view | ||||
| func (r *Repository) GetCommitsCount() (int64, error) { | ||||
| 	var contextName string | ||||
| 	if r.IsViewBranch { | ||||
| 		contextName = r.BranchName | ||||
| 	} else if r.IsViewTag { | ||||
| 		contextName = r.TagName | ||||
| 	} else { | ||||
| 		contextName = r.CommitID | ||||
| 	} | ||||
| 	return cache.GetInt64(r.Repository.GetCommitsCountCacheKey(contextName, r.IsViewBranch || r.IsViewTag), func() (int64, error) { | ||||
| 		return r.Commit.CommitsCount() | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // GetEditorconfig returns the .editorconfig definition if found in the | ||||
| // HEAD of the default repo branch. | ||||
| func (r *Repository) GetEditorconfig() (*editorconfig.Editorconfig, error) { | ||||
| @@ -535,9 +552,9 @@ func RepoRef() macaron.Handler { | ||||
| 		ctx.Data["IsViewCommit"] = ctx.Repo.IsViewCommit | ||||
| 		ctx.Data["CanCreateBranch"] = ctx.Repo.CanCreateBranch() | ||||
|  | ||||
| 		ctx.Repo.CommitsCount, err = ctx.Repo.Commit.CommitsCount() | ||||
| 		ctx.Repo.CommitsCount, err = ctx.Repo.GetCommitsCount() | ||||
| 		if err != nil { | ||||
| 			ctx.Handle(500, "CommitsCount", err) | ||||
| 			ctx.Handle(500, "GetCommitsCount", err) | ||||
| 			return | ||||
| 		} | ||||
| 		ctx.Data["CommitsCount"] = ctx.Repo.CommitsCount | ||||
|   | ||||
		Reference in New Issue
	
	Block a user