refactor: decouple git.Repository(ctx) from git.Commit & git.Tree (#38464)

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
This commit is contained in:
wxiaoguang
2026-07-15 17:30:01 +00:00
committed by GitHub
parent ed678b9d45
commit 82edc3da01
115 changed files with 730 additions and 862 deletions
+2 -2
View File
@@ -206,7 +206,7 @@ func WorkflowDispatchInputs(ctx *context.Context) {
func prepareWorkflowTemplate(ctx *context.Context, commit *git.Commit) (workflows []WorkflowInfo, curWorkflowID string) {
curWorkflowID = ctx.FormString("workflow")
_, entries, err := actions.ListWorkflows(commit)
_, entries, err := actions.ListWorkflows(ctx, ctx.Repo.GitRepo, commit)
if err != nil {
ctx.ServerError("ListWorkflows", err)
return nil, ""
@@ -215,7 +215,7 @@ func prepareWorkflowTemplate(ctx *context.Context, commit *git.Commit) (workflow
workflows = make([]WorkflowInfo, 0, len(entries))
for _, entry := range entries {
workflow := WorkflowInfo{EntryName: entry.Name()}
content, err := actions.GetContentFromEntry(entry)
content, err := actions.GetContentFromEntry(ctx.Repo.GitRepo, entry)
if err != nil {
ctx.ServerError("GetContentFromEntry", err)
return nil, ""
+2 -2
View File
@@ -257,7 +257,7 @@ func ViewWorkflowFile(ctx *context_module.Context) {
}, err)
return
}
rpath, entries, err := actions.ListWorkflows(commit)
rpath, entries, err := actions.ListWorkflows(ctx, ctx.Repo.GitRepo, commit)
if err != nil {
ctx.ServerError("ListWorkflows", err)
return
@@ -1414,7 +1414,7 @@ func viewScopedWorkflowFile(ctx *context_module.Context, run *actions_model.Acti
}, err)
return
}
rpath, entries, err := actions.ListScopedWorkflows(commit)
rpath, entries, err := actions.ListScopedWorkflows(ctx, sourceGitRepo, commit)
if err != nil {
ctx.ServerError("ListScopedWorkflows", err)
return