// Copyright 2020 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package git import ( "crypto/sha256" "fmt" ) // Cache represents a caching interface type Cache interface { // Put puts value into cache with key and expire time. Put(key string, val interface{}, timeout int64) error // Get gets cached value by given key. Get(key string) interface{} } func (c *LastCommitCache) getCacheKey(repoPath, ref, entryPath string) string { hashBytes := sha256.Sum256([]byte(fmt.Sprintf("%s:%s:%s", repoPath, ref, entryPath))) return fmt.Sprintf("last_commit:%x", hashBytes) } // Put put the last commit id with commit and entry path func (c *LastCommitCache) Put(ref, entryPath, commitID string) error { log("LastCommitCache save: [%s:%s:%s]", ref, entryPath, commitID) return c.cache.Put(c.getCacheKey(c.repoPath, ref, entryPath), commitID, c.ttl()) }