code.gitea.io/gitea@v1.19.3/modules/git/last_commit_cache_nogogit.go (about) 1 // Copyright 2020 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 //go:build !gogit 5 6 package git 7 8 import ( 9 "context" 10 ) 11 12 // CacheCommit will cache the commit from the gitRepository 13 func (c *Commit) CacheCommit(ctx context.Context) error { 14 if c.repo.LastCommitCache == nil { 15 return nil 16 } 17 return c.recursiveCache(ctx, &c.Tree, "", 1) 18 } 19 20 func (c *Commit) recursiveCache(ctx context.Context, tree *Tree, treePath string, level int) error { 21 if level == 0 { 22 return nil 23 } 24 25 entries, err := tree.ListEntries() 26 if err != nil { 27 return err 28 } 29 30 entryPaths := make([]string, len(entries)) 31 for i, entry := range entries { 32 entryPaths[i] = entry.Name() 33 } 34 35 _, err = WalkGitLog(ctx, c.repo, c, treePath, entryPaths...) 36 if err != nil { 37 return err 38 } 39 40 for _, treeEntry := range entries { 41 // entryMap won't contain "" therefore skip this. 42 if treeEntry.IsDir() { 43 subTree, err := tree.SubTree(treeEntry.Name()) 44 if err != nil { 45 return err 46 } 47 if err := c.recursiveCache(ctx, subTree, treeEntry.Name(), level-1); err != nil { 48 return err 49 } 50 } 51 } 52 53 return nil 54 }