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
+2 -2
View File
@@ -50,10 +50,10 @@ func TestDataAsyncDoubleRead_Issue29101(t *testing.T) {
commit, err := gitRepo.GetCommit(sha)
assert.NoError(t, err)
entry, err := commit.GetTreeEntryByPath("test.txt")
entry, err := commit.GetTreeEntryByPath(t.Context(), gitRepo, "test.txt")
assert.NoError(t, err)
b := entry.Blob()
b := entry.Blob(gitRepo)
r1, err := b.DataAsync()
assert.NoError(t, err)
defer r1.Close()