You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

last_commit_cache_nogogit.go 1.1KB

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