@@ -293,13 +293,21 @@ func (s *Server) handle(ctx context.Context, event *github.PullRequestEvent) err
293
293
}
294
294
log .Infof ("found %d files affected by pull request %d\n " , len (pullRequestAffectedFiles ), num )
295
295
296
- defaultWorkdir , err := prepareRepoDir (org , repo , num )
296
+ defaultWorkDir , err := prepareRepoDir (org , repo , num )
297
297
if err != nil {
298
298
return fmt .Errorf ("failed to prepare repo dir: %w" , err )
299
299
}
300
+ defer func () {
301
+ if s .debug {
302
+ return // do not remove the repository in debug mode
303
+ }
304
+ if err := os .RemoveAll (defaultWorkDir ); err != nil {
305
+ log .Errorf ("failed to remove the repository , err : %v" , err )
306
+ }
307
+ }()
300
308
301
309
r , err := s .gitClientFactory .ClientForWithRepoOpts (org , repo , gitv2.RepoOpts {
302
- CopyTo : defaultWorkdir + "/" + repo ,
310
+ CopyTo : defaultWorkDir + "/" + repo ,
303
311
})
304
312
if err != nil {
305
313
log .Errorf ("failed to create git client: %v" , err )
@@ -326,26 +334,12 @@ func (s *Server) handle(ctx context.Context, event *github.PullRequestEvent) err
326
334
log .Infof ("no .gitmodules file in repo %s" , repo )
327
335
}
328
336
329
- repoClients , err : = s .PrepareExtraRef (org , repo , defaultWorkdir )
337
+ _ , err = s .PrepareExtraRef (org , repo , defaultWorkDir )
330
338
if err != nil {
331
339
log .Errorf ("failed to prepare and clone ExtraRef : %v" , err )
332
340
return err
333
341
}
334
342
335
- repoClients = append (repoClients , r )
336
-
337
- defer func () {
338
- if s .debug {
339
- return // do not remove the repository in debug mode
340
- }
341
- for _ , r := range repoClients {
342
- err := r .Clean ()
343
- if err != nil {
344
- log .Errorf ("failed to remove the repository , err : %v" , err )
345
- }
346
- }
347
- }()
348
-
349
343
for name , fn := range linters .TotalPullRequestHandlers () {
350
344
linterConfig := s .config .GetLinterConfig (org , repo , name )
351
345
@@ -434,19 +428,24 @@ func prepareRepoDir(org, repo string, num int) (string, error) {
434
428
if err != nil {
435
429
return "" , fmt .Errorf ("failed to get user home dir: %w" , err )
436
430
}
437
- parentDir = filepath .Join (homeDir , "reviewbot-code" , fmt . Sprintf ( "%s-%s-%d" , org , repo , num ) )
431
+ parentDir = filepath .Join (homeDir , "reviewbot-code-workspace" )
438
432
} else {
439
- parentDir = filepath .Join ("/tmp" , "reviewbot-code" , fmt . Sprintf ( "%s-%s-%d" , org , repo , num ) )
433
+ parentDir = filepath .Join ("/tmp" , "reviewbot-code-workspace" )
440
434
}
441
435
442
436
if err := os .MkdirAll (parentDir , 0o755 ); err != nil {
443
437
return "" , fmt .Errorf ("failed to create parent dir: %w" , err )
444
438
}
445
439
446
- return parentDir , nil
440
+ dir , err := os .MkdirTemp (parentDir , fmt .Sprintf ("%s-%s-%d" , org , repo , num ))
441
+ if err != nil {
442
+ return "" , fmt .Errorf ("failed to create temp dir: %w" , err )
443
+ }
444
+
445
+ return dir , nil
447
446
}
448
447
449
- func (s * Server ) PrepareExtraRef (org , repo , defaultWorkdir string ) (repoClients []gitv2.RepoClient , err error ) {
448
+ func (s * Server ) PrepareExtraRef (org , repo , defaultWorkDir string ) (repoClients []gitv2.RepoClient , err error ) {
450
449
var repoCfg config.RepoConfig
451
450
config := s .config
452
451
if v , ok := config .CustomConfig [org ]; ok {
@@ -472,9 +471,9 @@ func (s *Server) PrepareExtraRef(org, repo, defaultWorkdir string) (repoClients
472
471
log .Fatalf ("failed to create git client factory: %v" , err )
473
472
}
474
473
475
- repoPath := defaultWorkdir + "/" + refConfig .Repo
474
+ repoPath := defaultWorkDir + "/" + refConfig .Repo
476
475
if refConfig .PathAlias != "" {
477
- repoPath = defaultWorkdir + refConfig .PathAlias
476
+ repoPath = defaultWorkDir + refConfig .PathAlias
478
477
}
479
478
r , err := gitClient .ClientForWithRepoOpts (refConfig .Org , refConfig .Repo , gitv2.RepoOpts {
480
479
CopyTo : repoPath ,
0 commit comments