mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-16 13:46:28 +02:00
1. Storing "ctx" in a long-living object is wrong 2. Make the commit & tree cacheable (for the future performance optimization) 3. Also fix some bad designs like `// FIXME: bad design, this field can be nil if the commit is from "last commit cache"` ref: * #33893
36 lines
916 B
Go
36 lines
916 B
Go
// Copyright 2025 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package fileicon
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gitea.dev/modules/git"
|
|
)
|
|
|
|
type EntryInfo struct {
|
|
BaseName string
|
|
EntryMode git.EntryMode
|
|
SymlinkToMode git.EntryMode
|
|
IsOpen bool
|
|
}
|
|
|
|
func EntryInfoFromGitTreeEntry(ctx context.Context, gitRepo *git.Repository, commit *git.Commit, fullPath string, gitEntry *git.TreeEntry) *EntryInfo {
|
|
ret := &EntryInfo{BaseName: gitEntry.Name(), EntryMode: gitEntry.Mode()}
|
|
if gitEntry.IsLink() {
|
|
if res, err := git.EntryFollowLink(ctx, gitRepo, commit, fullPath, gitEntry); err == nil && res.TargetEntry.IsDir() {
|
|
ret.SymlinkToMode = res.TargetEntry.Mode()
|
|
}
|
|
}
|
|
return ret
|
|
}
|
|
|
|
func EntryInfoFolder() *EntryInfo {
|
|
return &EntryInfo{EntryMode: git.EntryModeTree}
|
|
}
|
|
|
|
func EntryInfoFolderOpen() *EntryInfo {
|
|
return &EntryInfo{EntryMode: git.EntryModeTree, IsOpen: true}
|
|
}
|