Skip to content

Commit 4c4c56c

Browse files
authored
Decouple context from repository related structs (#33823)
Calls that required context implicitly are made to pass it as argument
1 parent 4ed71eb commit 4c4c56c

File tree

11 files changed

+118
-122
lines changed

11 files changed

+118
-122
lines changed

Diff for: models/activities/action.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -529,8 +529,8 @@ func ActivityQueryCondition(ctx context.Context, opts GetFeedsOptions) (builder.
529529
}
530530

531531
if opts.RequestedTeam != nil {
532-
env := repo_model.AccessibleTeamReposEnv(ctx, organization.OrgFromUser(opts.RequestedUser), opts.RequestedTeam)
533-
teamRepoIDs, err := env.RepoIDs(1, opts.RequestedUser.NumRepos)
532+
env := repo_model.AccessibleTeamReposEnv(organization.OrgFromUser(opts.RequestedUser), opts.RequestedTeam)
533+
teamRepoIDs, err := env.RepoIDs(ctx, 1, opts.RequestedUser.NumRepos)
534534
if err != nil {
535535
return nil, fmt.Errorf("GetTeamRepositories: %w", err)
536536
}

Diff for: models/organization/org_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ func TestAccessibleReposEnv_CountRepos(t *testing.T) {
320320
testSuccess := func(userID, expectedCount int64) {
321321
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
322322
assert.NoError(t, err)
323-
count, err := env.CountRepos()
323+
count, err := env.CountRepos(db.DefaultContext)
324324
assert.NoError(t, err)
325325
assert.EqualValues(t, expectedCount, count)
326326
}
@@ -334,7 +334,7 @@ func TestAccessibleReposEnv_RepoIDs(t *testing.T) {
334334
testSuccess := func(userID int64, expectedRepoIDs []int64) {
335335
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
336336
assert.NoError(t, err)
337-
repoIDs, err := env.RepoIDs(1, 100)
337+
repoIDs, err := env.RepoIDs(db.DefaultContext, 1, 100)
338338
assert.NoError(t, err)
339339
assert.Equal(t, expectedRepoIDs, repoIDs)
340340
}
@@ -348,7 +348,7 @@ func TestAccessibleReposEnv_Repos(t *testing.T) {
348348
testSuccess := func(userID int64, expectedRepoIDs []int64) {
349349
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
350350
assert.NoError(t, err)
351-
repos, err := env.Repos(1, 100)
351+
repos, err := env.Repos(db.DefaultContext, 1, 100)
352352
assert.NoError(t, err)
353353
expectedRepos := make(repo_model.RepositoryList, len(expectedRepoIDs))
354354
for i, repoID := range expectedRepoIDs {
@@ -367,7 +367,7 @@ func TestAccessibleReposEnv_MirrorRepos(t *testing.T) {
367367
testSuccess := func(userID int64, expectedRepoIDs []int64) {
368368
env, err := repo_model.AccessibleReposEnv(db.DefaultContext, org, userID)
369369
assert.NoError(t, err)
370-
repos, err := env.MirrorRepos()
370+
repos, err := env.MirrorRepos(db.DefaultContext)
371371
assert.NoError(t, err)
372372
expectedRepos := make(repo_model.RepositoryList, len(expectedRepoIDs))
373373
for i, repoID := range expectedRepoIDs {

Diff for: models/repo/org_repo.go

+17-20
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ func GetTeamRepositories(ctx context.Context, opts *SearchTeamRepoOptions) (Repo
4747
// AccessibleReposEnvironment operations involving the repositories that are
4848
// accessible to a particular user
4949
type AccessibleReposEnvironment interface {
50-
CountRepos() (int64, error)
51-
RepoIDs(page, pageSize int) ([]int64, error)
52-
Repos(page, pageSize int) (RepositoryList, error)
53-
MirrorRepos() (RepositoryList, error)
50+
CountRepos(ctx context.Context) (int64, error)
51+
RepoIDs(ctx context.Context, page, pageSize int) ([]int64, error)
52+
Repos(ctx context.Context, page, pageSize int) (RepositoryList, error)
53+
MirrorRepos(ctx context.Context) (RepositoryList, error)
5454
AddKeyword(keyword string)
5555
SetSort(db.SearchOrderBy)
5656
}
@@ -60,7 +60,6 @@ type accessibleReposEnv struct {
6060
user *user_model.User
6161
team *org_model.Team
6262
teamIDs []int64
63-
ctx context.Context
6463
keyword string
6564
orderBy db.SearchOrderBy
6665
}
@@ -86,18 +85,16 @@ func AccessibleReposEnv(ctx context.Context, org *org_model.Organization, userID
8685
org: org,
8786
user: user,
8887
teamIDs: teamIDs,
89-
ctx: ctx,
9088
orderBy: db.SearchOrderByRecentUpdated,
9189
}, nil
9290
}
9391

9492
// AccessibleTeamReposEnv an AccessibleReposEnvironment for the repositories in `org`
9593
// that are accessible to the specified team.
96-
func AccessibleTeamReposEnv(ctx context.Context, org *org_model.Organization, team *org_model.Team) AccessibleReposEnvironment {
94+
func AccessibleTeamReposEnv(org *org_model.Organization, team *org_model.Team) AccessibleReposEnvironment {
9795
return &accessibleReposEnv{
9896
org: org,
9997
team: team,
100-
ctx: ctx,
10198
orderBy: db.SearchOrderByRecentUpdated,
10299
}
103100
}
@@ -123,8 +120,8 @@ func (env *accessibleReposEnv) cond() builder.Cond {
123120
return cond
124121
}
125122

126-
func (env *accessibleReposEnv) CountRepos() (int64, error) {
127-
repoCount, err := db.GetEngine(env.ctx).
123+
func (env *accessibleReposEnv) CountRepos(ctx context.Context) (int64, error) {
124+
repoCount, err := db.GetEngine(ctx).
128125
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
129126
Where(env.cond()).
130127
Distinct("`repository`.id").
@@ -135,13 +132,13 @@ func (env *accessibleReposEnv) CountRepos() (int64, error) {
135132
return repoCount, nil
136133
}
137134

138-
func (env *accessibleReposEnv) RepoIDs(page, pageSize int) ([]int64, error) {
135+
func (env *accessibleReposEnv) RepoIDs(ctx context.Context, page, pageSize int) ([]int64, error) {
139136
if page <= 0 {
140137
page = 1
141138
}
142139

143140
repoIDs := make([]int64, 0, pageSize)
144-
return repoIDs, db.GetEngine(env.ctx).
141+
return repoIDs, db.GetEngine(ctx).
145142
Table("repository").
146143
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
147144
Where(env.cond()).
@@ -152,8 +149,8 @@ func (env *accessibleReposEnv) RepoIDs(page, pageSize int) ([]int64, error) {
152149
Find(&repoIDs)
153150
}
154151

155-
func (env *accessibleReposEnv) Repos(page, pageSize int) (RepositoryList, error) {
156-
repoIDs, err := env.RepoIDs(page, pageSize)
152+
func (env *accessibleReposEnv) Repos(ctx context.Context, page, pageSize int) (RepositoryList, error) {
153+
repoIDs, err := env.RepoIDs(ctx, page, pageSize)
157154
if err != nil {
158155
return nil, fmt.Errorf("GetUserRepositoryIDs: %w", err)
159156
}
@@ -163,15 +160,15 @@ func (env *accessibleReposEnv) Repos(page, pageSize int) (RepositoryList, error)
163160
return repos, nil
164161
}
165162

166-
return repos, db.GetEngine(env.ctx).
163+
return repos, db.GetEngine(ctx).
167164
In("`repository`.id", repoIDs).
168165
OrderBy(string(env.orderBy)).
169166
Find(&repos)
170167
}
171168

172-
func (env *accessibleReposEnv) MirrorRepoIDs() ([]int64, error) {
169+
func (env *accessibleReposEnv) MirrorRepoIDs(ctx context.Context) ([]int64, error) {
173170
repoIDs := make([]int64, 0, 10)
174-
return repoIDs, db.GetEngine(env.ctx).
171+
return repoIDs, db.GetEngine(ctx).
175172
Table("repository").
176173
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id AND `repository`.is_mirror=?", true).
177174
Where(env.cond()).
@@ -181,8 +178,8 @@ func (env *accessibleReposEnv) MirrorRepoIDs() ([]int64, error) {
181178
Find(&repoIDs)
182179
}
183180

184-
func (env *accessibleReposEnv) MirrorRepos() (RepositoryList, error) {
185-
repoIDs, err := env.MirrorRepoIDs()
181+
func (env *accessibleReposEnv) MirrorRepos(ctx context.Context) (RepositoryList, error) {
182+
repoIDs, err := env.MirrorRepoIDs(ctx)
186183
if err != nil {
187184
return nil, fmt.Errorf("MirrorRepoIDs: %w", err)
188185
}
@@ -192,7 +189,7 @@ func (env *accessibleReposEnv) MirrorRepos() (RepositoryList, error) {
192189
return repos, nil
193190
}
194191

195-
return repos, db.GetEngine(env.ctx).
192+
return repos, db.GetEngine(ctx).
196193
In("`repository`.id", repoIDs).
197194
Find(&repos)
198195
}

Diff for: services/org/user.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func RemoveOrgUser(ctx context.Context, org *organization.Organization, user *us
6464
if err != nil {
6565
return fmt.Errorf("AccessibleReposEnv: %w", err)
6666
}
67-
repoIDs, err := env.RepoIDs(1, org.NumRepos)
67+
repoIDs, err := env.RepoIDs(ctx, 1, org.NumRepos)
6868
if err != nil {
6969
return fmt.Errorf("GetUserRepositories [%d]: %w", user.ID, err)
7070
}

Diff for: services/packages/cargo/index.go

+14-14
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func RebuildIndex(ctx context.Context, doer, owner *user_model.User) error {
7878
"Rebuild Cargo Index",
7979
func(t *files_service.TemporaryUploadRepository) error {
8080
// Remove all existing content but the Cargo config
81-
files, err := t.LsFiles()
81+
files, err := t.LsFiles(ctx)
8282
if err != nil {
8383
return err
8484
}
@@ -89,7 +89,7 @@ func RebuildIndex(ctx context.Context, doer, owner *user_model.User) error {
8989
break
9090
}
9191
}
92-
if err := t.RemoveFilesFromIndex(files...); err != nil {
92+
if err := t.RemoveFilesFromIndex(ctx, files...); err != nil {
9393
return err
9494
}
9595

@@ -204,7 +204,7 @@ func addOrUpdatePackageIndex(ctx context.Context, t *files_service.TemporaryUplo
204204
return nil
205205
}
206206

207-
return writeObjectToIndex(t, BuildPackagePath(p.LowerName), b)
207+
return writeObjectToIndex(ctx, t, BuildPackagePath(p.LowerName), b)
208208
}
209209

210210
func getOrCreateIndexRepository(ctx context.Context, doer, owner *user_model.User) (*repo_model.Repository, error) {
@@ -252,29 +252,29 @@ func createOrUpdateConfigFile(ctx context.Context, repo *repo_model.Repository,
252252
return err
253253
}
254254

255-
return writeObjectToIndex(t, ConfigFileName, &b)
255+
return writeObjectToIndex(ctx, t, ConfigFileName, &b)
256256
},
257257
)
258258
}
259259

260260
// This is a shorter version of CreateOrUpdateRepoFile which allows to perform multiple actions on a git repository
261261
func alterRepositoryContent(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, commitMessage string, fn func(*files_service.TemporaryUploadRepository) error) error {
262-
t, err := files_service.NewTemporaryUploadRepository(ctx, repo)
262+
t, err := files_service.NewTemporaryUploadRepository(repo)
263263
if err != nil {
264264
return err
265265
}
266266
defer t.Close()
267267

268268
var lastCommitID string
269-
if err := t.Clone(repo.DefaultBranch, true); err != nil {
269+
if err := t.Clone(ctx, repo.DefaultBranch, true); err != nil {
270270
if !git.IsErrBranchNotExist(err) || !repo.IsEmpty {
271271
return err
272272
}
273-
if err := t.Init(repo.ObjectFormatName); err != nil {
273+
if err := t.Init(ctx, repo.ObjectFormatName); err != nil {
274274
return err
275275
}
276276
} else {
277-
if err := t.SetDefaultIndex(); err != nil {
277+
if err := t.SetDefaultIndex(ctx); err != nil {
278278
return err
279279
}
280280

@@ -290,7 +290,7 @@ func alterRepositoryContent(ctx context.Context, doer *user_model.User, repo *re
290290
return err
291291
}
292292

293-
treeHash, err := t.WriteTree()
293+
treeHash, err := t.WriteTree(ctx)
294294
if err != nil {
295295
return err
296296
}
@@ -301,19 +301,19 @@ func alterRepositoryContent(ctx context.Context, doer *user_model.User, repo *re
301301
CommitMessage: commitMessage,
302302
DoerUser: doer,
303303
}
304-
commitHash, err := t.CommitTree(commitOpts)
304+
commitHash, err := t.CommitTree(ctx, commitOpts)
305305
if err != nil {
306306
return err
307307
}
308308

309-
return t.Push(doer, commitHash, repo.DefaultBranch)
309+
return t.Push(ctx, doer, commitHash, repo.DefaultBranch)
310310
}
311311

312-
func writeObjectToIndex(t *files_service.TemporaryUploadRepository, path string, r io.Reader) error {
313-
hash, err := t.HashObject(r)
312+
func writeObjectToIndex(ctx context.Context, t *files_service.TemporaryUploadRepository, path string, r io.Reader) error {
313+
hash, err := t.HashObject(ctx, r)
314314
if err != nil {
315315
return err
316316
}
317317

318-
return t.AddObjectToIndex("100644", hash, path)
318+
return t.AddObjectToIndex(ctx, "100644", hash, path)
319319
}

Diff for: services/repository/files/cherry_pick.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,18 @@ func CherryPick(ctx context.Context, repo *repo_model.Repository, doer *user_mod
3939
}
4040
message := strings.TrimSpace(opts.Message)
4141

42-
t, err := NewTemporaryUploadRepository(ctx, repo)
42+
t, err := NewTemporaryUploadRepository(repo)
4343
if err != nil {
4444
log.Error("NewTemporaryUploadRepository failed: %v", err)
4545
}
4646
defer t.Close()
47-
if err := t.Clone(opts.OldBranch, false); err != nil {
47+
if err := t.Clone(ctx, opts.OldBranch, false); err != nil {
4848
return nil, err
4949
}
50-
if err := t.SetDefaultIndex(); err != nil {
50+
if err := t.SetDefaultIndex(ctx); err != nil {
5151
return nil, err
5252
}
53-
if err := t.RefreshIndex(); err != nil {
53+
if err := t.RefreshIndex(ctx); err != nil {
5454
return nil, err
5555
}
5656

@@ -103,7 +103,7 @@ func CherryPick(ctx context.Context, repo *repo_model.Repository, doer *user_mod
103103
return nil, fmt.Errorf("failed to merge due to conflicts")
104104
}
105105

106-
treeHash, err := t.WriteTree()
106+
treeHash, err := t.WriteTree(ctx)
107107
if err != nil {
108108
// likely non-sensical tree due to merge conflicts...
109109
return nil, err
@@ -124,13 +124,13 @@ func CherryPick(ctx context.Context, repo *repo_model.Repository, doer *user_mod
124124
if opts.Dates != nil {
125125
commitOpts.AuthorTime, commitOpts.CommitterTime = &opts.Dates.Author, &opts.Dates.Committer
126126
}
127-
commitHash, err := t.CommitTree(commitOpts)
127+
commitHash, err := t.CommitTree(ctx, commitOpts)
128128
if err != nil {
129129
return nil, err
130130
}
131131

132132
// Then push this tree to NewBranch
133-
if err := t.Push(doer, commitHash, opts.NewBranch); err != nil {
133+
if err := t.Push(ctx, doer, commitHash, opts.NewBranch); err != nil {
134134
return nil, err
135135
}
136136

Diff for: services/repository/files/diff.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,27 @@ func GetDiffPreview(ctx context.Context, repo *repo_model.Repository, branch, tr
1616
if branch == "" {
1717
branch = repo.DefaultBranch
1818
}
19-
t, err := NewTemporaryUploadRepository(ctx, repo)
19+
t, err := NewTemporaryUploadRepository(repo)
2020
if err != nil {
2121
return nil, err
2222
}
2323
defer t.Close()
24-
if err := t.Clone(branch, true); err != nil {
24+
if err := t.Clone(ctx, branch, true); err != nil {
2525
return nil, err
2626
}
27-
if err := t.SetDefaultIndex(); err != nil {
27+
if err := t.SetDefaultIndex(ctx); err != nil {
2828
return nil, err
2929
}
3030

3131
// Add the object to the database
32-
objectHash, err := t.HashObject(strings.NewReader(content))
32+
objectHash, err := t.HashObject(ctx, strings.NewReader(content))
3333
if err != nil {
3434
return nil, err
3535
}
3636

3737
// Add the object to the index
38-
if err := t.AddObjectToIndex("100644", objectHash, treePath); err != nil {
38+
if err := t.AddObjectToIndex(ctx, "100644", objectHash, treePath); err != nil {
3939
return nil, err
4040
}
41-
return t.DiffIndex()
41+
return t.DiffIndex(ctx)
4242
}

Diff for: services/repository/files/patch.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,15 @@ func ApplyDiffPatch(ctx context.Context, repo *repo_model.Repository, doer *user
126126

127127
message := strings.TrimSpace(opts.Message)
128128

129-
t, err := NewTemporaryUploadRepository(ctx, repo)
129+
t, err := NewTemporaryUploadRepository(repo)
130130
if err != nil {
131131
log.Error("NewTemporaryUploadRepository failed: %v", err)
132132
}
133133
defer t.Close()
134-
if err := t.Clone(opts.OldBranch, true); err != nil {
134+
if err := t.Clone(ctx, opts.OldBranch, true); err != nil {
135135
return nil, err
136136
}
137-
if err := t.SetDefaultIndex(); err != nil {
137+
if err := t.SetDefaultIndex(ctx); err != nil {
138138
return nil, err
139139
}
140140

@@ -179,7 +179,7 @@ func ApplyDiffPatch(ctx context.Context, repo *repo_model.Repository, doer *user
179179
}
180180

181181
// Now write the tree
182-
treeHash, err := t.WriteTree()
182+
treeHash, err := t.WriteTree(ctx)
183183
if err != nil {
184184
return nil, err
185185
}
@@ -199,13 +199,13 @@ func ApplyDiffPatch(ctx context.Context, repo *repo_model.Repository, doer *user
199199
if opts.Dates != nil {
200200
commitOpts.AuthorTime, commitOpts.CommitterTime = &opts.Dates.Author, &opts.Dates.Committer
201201
}
202-
commitHash, err := t.CommitTree(commitOpts)
202+
commitHash, err := t.CommitTree(ctx, commitOpts)
203203
if err != nil {
204204
return nil, err
205205
}
206206

207207
// Then push this tree to NewBranch
208-
if err := t.Push(doer, commitHash, opts.NewBranch); err != nil {
208+
if err := t.Push(ctx, doer, commitHash, opts.NewBranch); err != nil {
209209
return nil, err
210210
}
211211

0 commit comments

Comments
 (0)