@@ -215,18 +215,6 @@ func checkForInvalidation(requests models.PullRequestList, repoID int64, doer *m
215
215
return nil
216
216
}
217
217
218
- func addHeadRepoTasks (prs []* models.PullRequest ) {
219
- for _ , pr := range prs {
220
- log .Trace ("addHeadRepoTasks[%d]: composing new test task" , pr .ID )
221
- if err := PushToBaseRepo (pr ); err != nil {
222
- log .Error ("PushToBaseRepo: %v" , err )
223
- continue
224
- }
225
-
226
- AddToTaskQueue (pr )
227
- }
228
- }
229
-
230
218
// AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch,
231
219
// and generate new patch for testing as needed.
232
220
func AddTestPullRequestTask (doer * models.User , repoID int64 , branch string , isSync bool , oldCommitID , newCommitID string ) {
@@ -283,8 +271,14 @@ func AddTestPullRequestTask(doer *models.User, repoID int64, branch string, isSy
283
271
}
284
272
}
285
273
286
- addHeadRepoTasks (prs )
287
274
for _ , pr := range prs {
275
+ log .Trace ("Updating PR[%d]: composing new test task" , pr .ID )
276
+ if err := PushToBaseRepo (pr ); err != nil {
277
+ log .Error ("PushToBaseRepo: %v" , err )
278
+ continue
279
+ }
280
+
281
+ AddToTaskQueue (pr )
288
282
comment , err := models .CreatePushPullComment (doer , pr , oldCommitID , newCommitID )
289
283
if err == nil && comment != nil {
290
284
notification .NotifyPullRequestPushCommits (doer , pr , comment )
@@ -389,46 +383,23 @@ func checkIfPRContentChanged(pr *models.PullRequest, oldCommitID, newCommitID st
389
383
func PushToBaseRepo (pr * models.PullRequest ) (err error ) {
390
384
log .Trace ("PushToBaseRepo[%d]: pushing commits to base repo '%s'" , pr .BaseRepoID , pr .GetGitRefName ())
391
385
392
- // Clone base repo.
393
- tmpBasePath , err := models .CreateTemporaryPath ("pull" )
394
- if err != nil {
395
- log .Error ("CreateTemporaryPath: %v" , err )
396
- return err
397
- }
398
- defer func () {
399
- err := models .RemoveTemporaryPath (tmpBasePath )
400
- if err != nil {
401
- log .Error ("Error whilst removing temporary path: %s Error: %v" , tmpBasePath , err )
402
- }
403
- }()
404
-
405
386
if err := pr .LoadHeadRepo (); err != nil {
406
387
log .Error ("Unable to load head repository for PR[%d] Error: %v" , pr .ID , err )
407
388
return err
408
389
}
409
390
headRepoPath := pr .HeadRepo .RepoPath ()
410
391
411
- if err := git .Clone (headRepoPath , tmpBasePath , git.CloneRepoOptions {
412
- Bare : true ,
413
- Shared : true ,
414
- Branch : pr .HeadBranch ,
415
- Quiet : true ,
416
- }); err != nil {
417
- log .Error ("git clone tmpBasePath: %v" , err )
418
- return err
419
- }
420
- gitRepo , err := git .OpenRepository (tmpBasePath )
421
- if err != nil {
422
- return fmt .Errorf ("OpenRepository: %v" , err )
423
- }
424
- defer gitRepo .Close ()
425
-
426
392
if err := pr .LoadBaseRepo (); err != nil {
427
393
log .Error ("Unable to load base repository for PR[%d] Error: %v" , pr .ID , err )
428
394
return err
429
395
}
430
- if err := gitRepo .AddRemote ("base" , pr .BaseRepo .RepoPath (), false ); err != nil {
431
- return fmt .Errorf ("tmpGitRepo.AddRemote: %v" , err )
396
+ baseRepoPath := pr .BaseRepo .RepoPath ()
397
+
398
+ if err = pr .LoadIssue (); err != nil {
399
+ return fmt .Errorf ("unable to load issue %d for pr %d: %v" , pr .IssueID , pr .ID , err )
400
+ }
401
+ if err = pr .Issue .LoadPoster (); err != nil {
402
+ return fmt .Errorf ("unable to load poster %d for pr %d: %v" , pr .Issue .PosterID , pr .ID , err )
432
403
}
433
404
434
405
headFile := pr .GetGitRefName ()
@@ -438,16 +409,9 @@ func PushToBaseRepo(pr *models.PullRequest) (err error) {
438
409
439
410
_ = util .Remove (file )
440
411
441
- if err = pr .LoadIssue (); err != nil {
442
- return fmt .Errorf ("unable to load issue %d for pr %d: %v" , pr .IssueID , pr .ID , err )
443
- }
444
- if err = pr .Issue .LoadPoster (); err != nil {
445
- return fmt .Errorf ("unable to load poster %d for pr %d: %v" , pr .Issue .PosterID , pr .ID , err )
446
- }
447
-
448
- if err = git .Push (tmpBasePath , git.PushOptions {
449
- Remote : "base" ,
450
- Branch : fmt .Sprintf ("%s:%s" , pr .HeadBranch , headFile ),
412
+ if err := git .Push (headRepoPath , git.PushOptions {
413
+ Remote : baseRepoPath ,
414
+ Branch : pr .HeadBranch + ":" + headFile ,
451
415
Force : true ,
452
416
// Use InternalPushingEnvironment here because we know that pre-receive and post-receive do not run on a refs/pulls/...
453
417
Env : models .InternalPushingEnvironment (pr .Issue .Poster , pr .BaseRepo ),
0 commit comments