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-16 01:30:01 +08:00
committed by GitHub
parent ed678b9d45
commit 82edc3da01
115 changed files with 732 additions and 864 deletions
+4 -4
View File
@@ -174,7 +174,7 @@ func TestRepository_AddWikiPage(t *testing.T) {
masterTree, err := gitRepo.GetTree(repo.DefaultWikiBranch)
assert.NoError(t, err)
gitPath := WebPathToGitPath(webPath)
entry, err := masterTree.GetTreeEntryByPath(gitPath)
entry, err := masterTree.GetTreeEntryByPath(t.Context(), gitRepo, gitPath)
assert.NoError(t, err)
assert.Equal(t, gitPath, entry.Name(), "%s not added correctly", userTitle)
})
@@ -219,12 +219,12 @@ func TestRepository_EditWikiPage(t *testing.T) {
masterTree, err := gitRepo.GetTree(repo.DefaultWikiBranch)
assert.NoError(t, err)
gitPath := WebPathToGitPath(webPath)
entry, err := masterTree.GetTreeEntryByPath(gitPath)
entry, err := masterTree.GetTreeEntryByPath(t.Context(), gitRepo, gitPath)
assert.NoError(t, err)
assert.Equal(t, gitPath, entry.Name(), "%s not edited correctly", newWikiName)
if newWikiName != "Home" {
_, err := masterTree.GetTreeEntryByPath("Home.md")
_, err := masterTree.GetTreeEntryByPath(t.Context(), gitRepo, "Home.md")
assert.Error(t, err)
}
gitRepo.Close()
@@ -245,7 +245,7 @@ func TestRepository_DeleteWikiPage(t *testing.T) {
masterTree, err := gitRepo.GetTree(repo.DefaultWikiBranch)
assert.NoError(t, err)
gitPath := WebPathToGitPath("Home")
_, err = masterTree.GetTreeEntryByPath(gitPath)
_, err = masterTree.GetTreeEntryByPath(t.Context(), gitRepo, gitPath)
assert.Error(t, err)
}